+15 Arduino-projekte vir beginners  Lys ‚Ė∑ 2021

Arduino is baie bekend daarvoor dat dit ‘n platform is wat deur enigiemand gebruik kan word om open source hardeware en sagteware te ontwikkel.. Die doel van hierdie maatskappy is: skep digitale of interaktiewe toestelle met behulp van hardeware borde.

‘N Arduino-raad bedien ‘n wye verskeidenheid take. Werk deur Arduino IDE, waar u die programmeertaal kan gebruik om instruksies te skryf oor die stroombane wat deur die bord gedek word.

Die rede waarom ons hierdie boodskap gemaak het, Dit kan wissel na gelang van die behoeftes en gebruike wat u wil gee. Hier is die mees prominente en uitvoerbare Arduino-projekte wat u kan gebruik.

Lys die beste Arduino-projekte vir beginners wat u self kan doen

Arduino

Met hierdie projekte, u leer van die mees basiese konsepte rakende die skep van programme en interaksietoestelle, sowel as die gebruik van verskillende komponente, sodat u uitsonderlike stelsels vir u eie voordeel kan begin ontwerp.

Gaan vir dit:

Maak ‘n batterytoetser

Maak 'n batterytoetser

As u wil sien hoeveel krag daar in een van u batterye oorbly, U kan hierdie projek doen om u ideale batterytoetser te bou. Deur middel van sommige elemente soos ‘n Arduino UNO-raad en ‘n paar LED’s, het u die voordeel om die lewensduur van ‘n battery onder 5 watt te bou en te toets.

U benodig hierdie projek ‘n Arduino UNO-bord, ‘n temperatuursensor; humiditeit en druk; Adafruit BME680, ‘n Adafruit INA169 monitorkaart, ‘n weerstand van 1k ohm, ‘n kondensator, ‘n bougie en ‘n kabelset om al die elemente op die bord aan te sluit.

Sodra u al hierdie produkte het en saamgestel is soos die foto toon, moet u die Arduino-programmeeromgewing betree en die volgende instruksies opneem:

#include "Arduino.h"

#include "Board.h"

#include "Helium.h"

#include "HeliumUtil.h"

#include "TimeLib.h"

#include "BlueDot_BME680.h"

#include "TimerSupport.h"

#define CHANNEL_NAME "GCIoTCore"

#define XMIT_PERIOD_MS 20000

#define VOLTS_SAMPLE_RATE_MS 250

Helium helium(&atom_serial);

Channel channel(&helium);

BlueDot_BME680 bme680 = BlueDot_BME680();

#define TS_BUF_SIZE 40

char TSbuf[TS_BUF_SIZE];

char *TSbuf_ptr = TSbuf;

char buffer[HELIUM_MAX_DATA_SIZE];

#define ADC_VOLTS_PER_BIT 0.00488

int ADCValue = 0;

struct helium_info info;

time_t timestamp;

TimeElements tm;

long highCurrentSamples = 0;

long lowCurrentSamples = 0;

float peakCurrent = 0;

float peakVoltage = 0;

#define MAX_JSON_FORMAT_STR 7

char JSON_FORMATS[][MAX_JSON_FORMAT_STR] = {

"{"i":",

","T":",

","H":",

","DT":",

","V":",

","IP":",

","IA":",

"}"

};

int addToBuffer(char *insertionPoint, int maxLen, char *src)

{

snprintf(insertionPoint, maxLen, src);

return strlen(insertionPoint);

}

void sendInfoViaHelium()

{

static unsigned long i = 0;

float t = 0;

float h = 0;

float v = 0;

float ip = 0;

float ia = 0;

char *buf_ptr = buffer;

char tmpBuf[11];

long totalSamples = highCurrentSamples + lowCurrentSamples;

i++;

print(F("i = "));

println(i);

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[0]);

snprintf(tmpBuf, 11, "%lu", i);

buf_ptr += addToBuffer(buf_ptr, sizeof(tmpBuf), tmpBuf);

writeCTRLMeas();

t = bme680.readTempC();

print(F("Temp = " ));

print

println(F(" degrees C"));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[1]);

dtostrf(t, 3, 2, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, 6, tmpBuf);

h = bme680.readHumidity();

print(F("Humidity = " ));

print(h);

println(F(" %"));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[2]);

dtostrf(h, 3, 2, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, 6, tmpBuf);

info(&info);

timestamp = info.time;

print(F("timestamp = "));

println(timestamp);

breakTime(timestamp, tm);

snprintf(TSbuf_ptr, TS_BUF_SIZE, ""%d-%d-%d %d:%d:%d"", tm.Year + 1970, tm.Month, tm.Day, tm.Hour, tm.Minute, tm.Second);

print(F("TSbuf is "));

println(TSbuf);

print(F("TSbuf length is "));

println(strlen(TSbuf));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[3]);

buf_ptr += addToBuffer(buf_ptr, TS_BUF_SIZE, TSbuf);

v = peakVoltage;

print(F("Voltage = "));

print(v);

println(F(" Volts"));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[4]);

dtostrf(v, 3, 2, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, 6, tmpBuf);

ip = peakCurrent;

print(F("Curr pk = "));

print(ip);

println(F(" Amps"));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[5]);

dtostrf(ip, 4, 3, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, 6, tmpBuf);

ia = peakCurrent * highCurrentSamples / totalSamples;

print(F("Curr avg = "));

print(ia);

println(F(" Amps"));

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[6]);

dtostrf(ia, 8, 6, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, 9, tmpBuf);

buf_ptr += addToBuffer(buf_ptr, MAX_JSON_FORMAT_STR, JSON_FORMATS[7]);

println(buffer);

print(F("buffer length is "));

println(strlen(buffer));

channel_send(&channel, CHANNEL_NAME, buffer, strlen(buffer));

}

void measureBattery()

{

float val = 0;

float threshold = 0;

ADCValue = analogRead(A1);

val = ADCValue * ADC_VOLTS_PER_BIT;

if (val > peakCurrent)

{

peakCurrent = val;

}

if (peakCurrent > 0)

{

threshold = peakCurrent / 4.0;

if (val > threshold)

{

highCurrentSamples++;

}

if (val <= threshold)

{

lowCurrentSamples++;

}

}

else

{

lowCurrentSamples++;

}

if (!down_timer_running(READ_VOLTS_timer))

{

init_down_timer(READ_VOLTS_timer, VOLTS_SAMPLE_RATE_MS);

ADCValue = analogRead(A0);

val = ADCValue * (ADC_VOLTS_PER_BIT * 4);

if (val > peakVoltage)

{

peakVoltage = val;

}

}

}

void resetBatteryVars()

{

highCurrentSamples = 0;

lowCurrentSamples = 0;

peakCurrent = 0;

peakVoltage = 0;

}

void setup()

{

int retVal;

int i;

begin(9600);

DBG_PRINTLN(F("Starting"));

begin(HELIUM_BAUD_RATE);

helium_connect(&helium);

channel_create(&channel, CHANNEL_NAME);

parameter.I2CAddress = 0x77;

parameter.sensorMode = 0b01;

parameter.IIRfilter = 0b100;

parameter.humidOversampling = 0b101;

parameter.tempOversampling = 0b101;

parameter.pressOversampling = 0b000;

retVal = bme680.init();

if (retVal != 0x61)

{

DBG_PRINT(F("BME680 could not be found... Chip ID was 0x"));

DBG_PRINT(retVal, HEX);

DBG_PRINTLN(F(" instead of 0x61"));

}

init_down_timer(SEND_timer, XMIT_PERIOD_MS);

init_down_timer(READ_VOLTS_timer, VOLTS_SAMPLE_RATE_MS);

resetBatteryVars();

}

void loop()

{

measureBattery();

if (!down_timer_running(SEND_timer))

{

init_down_timer(SEND_timer, XMIT_PERIOD_MS);

DBG_PRINT(F("highCurrentSamples = "));

DBG_PRINTLN(highCurrentSamples);

DBG_PRINT(F("lowCurrentSamples = "));

DBG_PRINTLN(lowCurrentSamples);

sendInfoViaHelium();

resetBatteryVars();

}

}

Bou ‘n horlosie

Bou 'n horlosie

Met die gebruik van ‘n Arduino kan u verskillende soorte horlosies ontwerp, wat aangepas word volgens die behoefte wat u het. Byvoorbeeld, ‘n baie eenvoudige wekker wat u met basiese komponente kan maak. Om al die komponente aan te sluit u moet gelei word deur die stroombaandiagram in die afbeelding.

Dan moet u die IDE-omgewing betree en die volgende opdragte invoer:

#include <LiquidCrystal.h> //

#include <Button.h> //

#include <DS3231.h> // RTC

int zumbador  =  13 ;

uint8_t hh  =  0 ,  mm  =  0 ,  ss  =  0 ;

uint8_t timerMode  =  0  , setMode = 0 ,  setAlarm = 0 ,  alarmMode = 0  ;

uint8_t alarmaHH  = 0  , alarmaMM  = 0  , alarmaSS = 0 ;

uint8_t timerhh = 0 ,  timermm = 0 ,  timerss  = 0 ;

LiquidCrystal lcd ( 12 ,  11 ,  5 ,  4 ,  3 ,  2 );

DS3231 rtc ( SDA , SCL );

Tiempo t ;

#define DN_PIN 7

#define UP_PIN 8

#define SET_PIN 9

#define ALR_PIN 10

#define PULLUP true

#define INVERT true

#define DEBOUNCE_MS 20

#define REPEAT_FIRST 500

#define REPEAT_INCR 100

//Declare push buttons

Button btnDN(DN_PIN, PULLUP, INVERT, DEBOUNCE_MS);

Button btnUP(UP_PIN, PULLUP, INVERT, DEBOUNCE_MS);

Button btnSET(SET_PIN, PULLUP, INVERT, DEBOUNCE_MS);

Button btnALR(ALR_PIN, PULLUP, INVERT, DEBOUNCE_MS);

enum {WAIT, INCR, DECR};

uint8_t STATE;

int count;

int lastCount = -1;

unsigned long rpt = REPEAT_FIRST;

void setup() {

begin(9600);

begin(16,2);

pinMode(buzzer,OUTPUT);

begin();

setCursor(0,0);

print("Welcome Shaqib!");

delay(2000);

clear();

}

void loop() {

t=rtc.getTime();

hh=t.hour,DEC;

mm=t.min,DEC;

ss=t.sec,DEC;

read();

read();

read();

read();

if(setMode==0 && setAlarm==0 ){

tunjukJamTemp();

tunjukTimer();}

if(setMode!=0 && setAlarm==0 && alarmMode==0 ){delay(100);}

if(setMode==1 && setAlarm==0 && alarmMode==0 ){lcd.setCursor(7,1);lcd.print(" ");delay(100);tunjukJamTemp();tunjukTimer();}

if(setMode==2 && setAlarm==0 && alarmMode==0 ){lcd.setCursor(10,1);lcd.print(" ");delay(100);tunjukJamTemp();tunjukTimer();}

if(setMode==3 && setAlarm==0 && alarmMode==0 ){lcd.setCursor(13,1);lcd.print(" ");delay(100);tunjukJamTemp();tunjukTimer();}

if(setMode==4 && setAlarm==0 && alarmMode==0 ){tunjukJamTemp();tunjukTimer();stepDown();delay(1000);}

if(setMode==0 && setAlarm!=0 && alarmMode==0 ){delay(100);}

if(setMode==0 && setAlarm==2 && alarmMode==0 ){lcd.setCursor(0,0);lcd.print(" ");delay(100);    setCursor(0,0);

if(alarmHH<10){lcd.print("0");}

print(alarmHH);lcd.print(":");

if(alarmMM<10){lcd.print("0");}

print(alarmMM);lcd.print(":");

if(alarmSS<10){lcd.print("0");}

print(alarmSS);lcd.setCursor(0,1);

print("Set Your Alarm");}

if(setMode==0 && setAlarm==3 && alarmMode==0 ){lcd.setCursor(3,0);lcd.print(" ");delay(100);    setCursor(0,0);

if(alarmHH<10){lcd.print("0");}

print(alarmHH);lcd.print(":");

if(alarmMM<10){lcd.print("0");}

print(alarmMM);lcd.print(":");

if(alarmSS<10){lcd.print("0");}

print(alarmSS);lcd.setCursor(0,1);

print("Set Your Alarm");}

if(setMode==0 && setAlarm==4 && alarmMode==0 ){lcd.setCursor(6,0);lcd.print(" ");delay(100);    setCursor(0,0);

if(alarmHH<10){lcd.print("0");}

print(alarmHH);lcd.print(":");

if(alarmMM<10){lcd.print("0");}

print(alarmMM);lcd.print(":");

if(alarmSS<10){lcd.print("0");}

print(alarmSS);lcd.setCursor(0,1);

print("Set Your Alarm");}

if(setMode==0 && setAlarm==5 && alarmMode==0 ){alarmMode=1;setAlarm=0;}

setupAlarm();

Alarm(alarmHH,alarmMM);

read();

read();

read();

read();

switch (STATE) {

case WAIT:

if (btnSET.wasPressed())

{ setMode = setMode+1;}

if (btnALR.wasPressed())

{ setAlarm = setAlarm+1;}

if (btnUP.wasPressed())

STATE = INCR;

else if (btnDN.wasPressed())

STATE = DECR;

else if (btnUP.wasReleased())

rpt = REPEAT_FIRST;

else if (btnDN.wasReleased())

rpt = REPEAT_FIRST;

else if (btnUP.pressedFor(rpt)) {

rpt += REPEAT_INCR;

STATE = INCR;

}

else if (btnDN.pressedFor(rpt)) {

rpt += REPEAT_INCR;

STATE = DECR;

}

break;

case INCR:

if (setMode==1 && setAlarm==0 && alarmMode==0 && timerhh<23)timerhh=timerhh+1;

if (setMode==2 && setAlarm==0 && alarmMode==0 && timermm<59)timermm=timermm+1;

if (setMode==3 && setAlarm==0 && alarmMode==0 && timerss<59)timerss=timerss+1;

if (setMode==0 && setAlarm==2 && alarmMode==0 && alarmHH<23)alarmHH=alarmHH+1;

if (setMode==0 && setAlarm==3 && alarmMode==0 && alarmMM<59)alarmMM=alarmMM+1;

if (setMode==0 && setAlarm==4 && alarmMode==0 && alarmSS<59)alarmSS=alarmSS+1;

STATE = WAIT;

break;

case DECR:

if (setMode==1 && setAlarm==0 && alarmMode==0 && timerhh>0)timerhh=timerhh-1;

if (setMode==2 && setAlarm==0 && alarmMode==0 && timermm>0)timermm=timermm-1;

if (setMode==3 && setAlarm==0 && alarmMode==0 && timerss>0)timerss=timerss-1;

if (setMode==0 && setAlarm==2 && alarmMode==0 && alarmHH>0)alarmHH=alarmHH-1;

if (setMode==0 && setAlarm==3 && alarmMode==0 && alarmMM>0)alarmMM=alarmMM-1;

if (setMode==0 && setAlarm==4 && alarmMode==0 && alarmSS>0)alarmSS=alarmSS-1;

STATE = WAIT;

break;

}

}

void stepDown() {

if (timerss > 0) {

timerss -= 1;

} else {

if (timermm > 0) {

timerss = 59;

timermm -= 1;

} else {

if (timerhh > 0) {

timerss = 59;

timermm = 59;

timerhh -= 1;

} else {

for(int i=0;i<30;i++){

setCursor(0,0);

print(rtc.getTimeStr());

setCursor(10,0);

print(rtc.getTemp());

print("C");

read();

if(btnSET.wasPressed()){digitalWrite(buzzer,LOW);i=30;}else{

digitalWrite(buzzer,HIGH);

delay(500);

digitalWrite(buzzer,LOW);

delay(500);}

}

setMode=0;

}

}

}

}

void tunjukTimer(){

setCursor(0, 1);

print("Timer:");

print(" ");

(timerhh < 10) ? lcd.print("0") : NULL;

print(timerhh);

print(":");

(timermm < 10) ? lcd.print("0") : NULL;

print(timermm);

print(":");

(timerss < 10) ? lcd.print("0") : NULL;

print(timerss);

}

void tunjukJamTemp(){

setCursor(0,0);

print(rtc.getTimeStr());

setCursor(10,0);

print(rtc.getTemp());

print("C");

}

void Alarm(uint8_t alarmHH,uint8_t alarmMM){

if(alarmMode==1 && alarmHH==hh && alarmMM==mm){

for(int i=0;i<30;i++){

setCursor(0,0);

print(rtc.getTimeStr());

setCursor(10,0);

print(rtc.getTemp());

print("C");

setCursor(0, 1);

print("Timer:");

print(" ");

(timerhh < 10) ? lcd.print("0") : NULL;

print(timerhh);

print(":");

(timermm < 10) ? lcd.print("0") : NULL;

print(timermm);

print(":");

(timerss < 10) ? lcd.print("0") : NULL;

print(timerss);

read();

if(btnALR.wasPressed()){digitalWrite(buzzer,LOW);i=30;}else{

digitalWrite(buzzer,HIGH);

delay(500);

digitalWrite(buzzer,LOW);

delay(500);}

}

alarmMode=0;

setAlarm=0;

}}

void setupAlarm(){

if(setMode==0 && setAlarm==1 && alarmMode==0 ){

clear();

setCursor(0,1);

print("Set Your Alarm");

setCursor(0,0);

if(alarmHH<10){lcd.print("0");}

print(alarmHH);lcd.print(":");

if(alarmMM<10){lcd.print("0");}

print(alarmMM);lcd.print(":");

if(alarmSS<10){lcd.print("0");}

print(alarmSS);

}

}

Arduino verkeerslig

Deur middel van hierdie projek kan ons Arduino gebruik om ‘n semafoor te bou. Met die gebruik van sommige komponente kan ons die rooi, geel en groen kleure vir motors in aankomende verkeersaanwysings waarneem. Dit kan werk, met die gebruik van twee drukknoppies om ‘n sensor te bou wat aan- en afskakel, wat aandui of daar enige motors kom. Dus, as daar verkeer is, is die verkeerslig rooi, en indien nie, groen.

Rugsak alarm

Rugsak alarm

As u wil voorkom dat diewe u rugsak steel, kan u van hierdie alarm gebruik maak. Die konstruksie is gemaak met ‘n Arduino-bord, ‘n alarm van 80 desibel en ‘n drie-as versnellingsmeter. Die alarm sal klink sodra iemand die rugsak wil oopmaak sonder u toestemming. Gebruik die prentjie om saam te stel die Arduino UNO-bord, die drievoudige versnellingsmeter, die pi√ęzo-elektriese alarm, die klankaansluiting, die 9v-battery, die springkabels en die 9 volt Jack-aansluiting.

Nadat u hierdie stap gedoen het, moet u die volgende in die IDE skryf:

include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_LSM303_U.h>

#include <Adafruit_LSM303.h>

const int sens = 10;

Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);

void setup(void)

{

pinMode(13, OUTPUT);

if(!mag.begin())

{

// There was a problem detecting the LSM303 ... check your connections

digitalWrite(13, HIGH);

delay(500);

digitalWrite(13, LOW);

delay(500);

digitalWrite(13, HIGH);

delay(500);

digitalWrite(13, LOW);

delay(500);

while(1);

}

// Wait 5 seconds

delay(5000);

// Alert when started

digitalWrite(13, HIGH);

delay(500);

digitalWrite(13, LOW);

}

// function for getting the sensor value

int getDeg(void){

// Get a new sensor event

sensors_event_t event;

getEvent(&event);

float Pi = 3.14159;

float heading = int((atan2(event.magnetic.y,event.magnetic.x) * 180) / Pi);

if (heading < 0)

{

heading = 360 + heading;

}

return heading;

}

void loop(void)

{

int oldDeg = getDeg();

delay(1000);

int newDeg = getDeg();

if (newDeg < (oldDeg-sens) && oldDeg != 0 && newDeg != 0) {

// sound the alarm

digitalWrite(13, HIGH);

// Just for debugging

//Serial.println("Triggered");

//Serial.println("");

}else if (newDeg > (oldDeg+sens) && oldDeg!= 0 && newDeg != 0) {

// sound the alarm

digitalWrite(13, HIGH);

}

}

Arduino stembeheerde blindings

Arduino stembeheerde blindings

Jy kan ook gebruik ‘n Arduino-bord om die blindings in u kamer of besigheid te skuif. In so ‘n kort tydjie en met die regte programmering ingevoeg, het u die vermo√ę om u blindings met ‘n stembeheerstelsel via Bluetooth oop en toe te maak. U benodig ‘n Arduino Nano R3-bord en al die komponente wat u op die foto sien.

Voer dan hierdie program in die IDE in:

int brillo  =  0 ;

int fadeAmount  =  5 ;

int led  =  3 ;

int inPin  =  4 ;

int inPin2  =  7 ;

int val2  =  0 ;

int val  =  0 ;

const int  motorPin1   =  11 ;

const int  motorPin2   =  10 ;

const int  motorPin3   =  8 ;

const int  motorPin4   =  9 ;

int estado ;  int  bandera = 0 ;

configuración vacía ()

{

pinMode ( motorPin1 , SALIDA );

pinMode ( motorPin2 , SALIDA );

pinMode ( motorPin3 , SALIDA );

pinMode ( motorPin4 , SALIDA );

pinMode ( inPin , INPUT );

pinMode ( inPin2 , ENTRADA );

pinMode ( led , SALIDA );

begin(9600);

delay(1000); }

void loop(){

analogWrite(led, brightness);

brightness = brightness + fadeAmount;

if (brightness <= 0 || brightness >= 255) {

fadeAmount = -fadeAmount;

}

delay(30);

val = digitalRead(inPin);

val2 = digitalRead(inPin2);

if(Serial.available() > 0)

{

state = Serial.read();

flag=0;

}

if (state == 'U' || val == LOW)

{

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, HIGH);

delay(2000);

digitalWrite(motorPin1, 0);

digitalWrite(motorPin2, 0);

digitalWrite(motorPin3, 0);

digitalWrite(motorPin4, 0);

println("Both Up");

state = 0;

}

else if (state == 'D' || val2 == LOW)

{

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, 0);

digitalWrite(motorPin3, 0);

digitalWrite(motorPin4, HIGH);

delay(2000);

digitalWrite(motorPin1, 0);

digitalWrite(motorPin2, 0);

digitalWrite(motorPin3, 0);

digitalWrite(motorPin4, 0);

println("Both Down");

state = 0;

}

if (state == 'W')

{

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, HIGH);

delay(2000);

digitalWrite(motorPin1, 0);

digitalWrite(motorPin2, 0);

println("Right Up");

state = 0;

}

else if (state == 'L')

{

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, 0);

delay(2000);

digitalWrite(motorPin1, 0);

digitalWrite(motorPin2, 0);

println("Right Down");

state = 0;

}

if (state == 'K')

{

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, HIGH);

delay(2000);

digitalWrite(motorPin3, 0);

digitalWrite(motorPin4, 0);

println("Left Up");

state = 0;

}

else if (state == 'I')

{

digitalWrite(motorPin3, 0);

digitalWrite(motorPin4, HIGH);

delay(2000);

escritura digital(motorPin3, 0);

digitalWrite (motorPin4, 0);

Serial . println ( "Izquierda abajo" );

estado =  0 ;

}

}

Chronometer

Chronometer

U kan die Arduino-bord omskakel op ‘n eenvoudige stophorlosie met die gebruik van min materiale. Hiervoor benodig u twee drukknoppies, ‘n paar weerstande, ‘n plaat en kabels; Op hierdie manier sal u hierdie nuttige instrument kan bou om tyd aan te dui.

Stel die verbindings saam volgens die diagram wat ons wys en skryf dan die programmeringskodes in die Arduino-omgewing:

#include <EEPROM.h>

#define interruptPin 2

#define eeAddress 0

hora de inicio flotante =  0 ;

float endtime = 0 ;

flotador resulttime = 0 ,  oldresulttime = 0 ;

configuración vacía () {

Serial . comenzar ( 9600 );

while ( ! Serial )  {

;

}

Serial . println ( "¬°Las comunicaciones en serie est√°n listas, se√Īor!: .. bip bip" );

attachInterrupt ( digitalPinToInterrupt ( interruptPin ), refreshTime ,  CHANGE );

}

bucle vacío () {

}

void refreshTime () {

if ( digitalRead ( interruptPin )) {

hora de inicio = milis ();

print("Start time: "); Serial.println(starttime);

}else

if(digitalRead(interruptPin)==LOW){

endtime=millis();

resulttime=endtime-starttime;

print("End time: "); Serial.println(endtime);

print("Result time: "); Serial.println(resulttime);

WhatsNewEeprom();

}

}

void WhatsNewEeprom(){

println("-----------checking eeprom");

get( eeAddress, oldresulttime );

print("oldresulttime");Serial.println(oldresulttime);

Serial . print ( "tiempo de resultado" ); Serial . println (tiempo de resultado );

if ( resulttime ! = oldresulttime ) {

EEPROM . put ( eeAddress ,  resulttime );

Serial . print ( "----- ¬°Ding! Nuevo tiempo registrado en eeprom:" ); Serial . println (tiempo de resultado );

} m√°s {

Serial . println ( "No se encontró una nueva hora, eeprom no fue perturbado" );

}

}

Tweet met Arduino

Tweet met Arduino

Met Arduino kan u ongelooflike nuwe gebruike op baie dinge en selfs op u Twitter-rekening toepas. As u korrek programmeer, kan u hierdie funksie aktiveer deur ‘n skakelaar en ‘n aflos aan ‘n boord te koppel. U moet ‘n UNO-model, ‘n 330 Ohm-weerstand, ‘n vonkfunksie-knoppie, ‘n 1Sheeld-plaat en kabels h√™. Om al hierdie komponente te verenig, is dit nodig dat u die beeld wat ons aan u wys, in ag neem.

Voer dan hierdie programmeringsreekse in IDE in:

#define CUSTOM_SETTINGS

#define INCLUDE_TWITTER_SHIELD

#include <OneSheeld.h>

int buttonPin = 12;

int ledPin = 13;

void setup()

{

/* Start communication. */

begin();

/* Set the button pin as input. */

pinMode(buttonPin,INPUT);

/* Set the LED pin as output. */

pinMode(ledPin,OUTPUT);

}

void loop()

{

/* Always check the button state. */

if(digitalRead(buttonPin) == HIGH)

{

/* Turn on the LED. */

digitalWrite(ledPin,HIGH);

/* Tweet. */

tweet("Uso IPAP como plataforma para aprender");

/* Wait for 300 ms. */

delay(300);

}

else

{

/* Turn off the LED. */

digitalWrite(ledPin,LOW);

}

}

Gloeilampstelsel

Gloeilampstelsel

Daar is ‘n paar meer gevorderde items wat u kan gebruik om die gloeilampe in u huis aan en aan te skakel. SHulle benodig min materiale sodat u u eie beligtingstelsel kan skep en dit met u hande kan beheer. Om dit te doen, moet u die weerstande en relais op die bord aansluit, soos in die illustrasie getoon. U sal ook dieselfde met die ander komponente moet doen.

Sodra u alles gereed het, skryf u die kodes:

#define CUSTOM_SETTINGS

#define INCLUDE_GPS_SHIELD

#define INCLUDE_TEXT_TO_SPEECH_SHIELD

#define INCLUDE_ORIENTATION_SENSOR_SHIELD

#define INCLUDE_VOICE_RECOGNIZER_SHIELD

#define INCLUDE_MIC_SHIELD

#define INCLUDE_DATA_LOGGER_SHIELD

#define INCLUDE_CAMERA_SHIELD

#include <OneSheeld.h>

String openpass¬† =¬† "contrase√Īa" ;

String lockpass  =  "bien entonces" ;

String lighton  =  "luz encendida" ;

String lightoff  =  "luz apagada" ;

String picture  =  "selfie" ;

int Light  =  22 ;

int LockMotor1  =  24 ;

int LockMotor2  =  25 ;

longitud flotante , latitud ;

int lock  =  0 ;  // 0 = cerrado, 1 = abierto

int orientación = 0 ;  // Verifique la orientación del teléfono. 1 = orientación confirmada.

configuración vacía ()

{

OneSheeld . comenzar ();

pinMode ( Luz , SALIDA );

digitalWrite ( Ligero , ALTO );  // El relé está activo BAJO (ALTO = La luz está apagada inicialmente)

pinMode ( LockMotor1 , SALIDA );

pinMode ( LockMotor2 , SALIDA );

digitalWrite ( LockMotor1 , LOW );

digitalWrite ( LockMotor2 , LOW );

retraso ( 2000 );

Logger . detener ();

}

bucle vacío ()

{

while ( 1 ) {

longitud =  GPS . getLongitude ();

latitud =  GPS . getLatitude ();

if ( longitud > = 78.05 &&  longitud <= 87.09  &&  latitud > = 88.60  &&  latitud <= 88.684 )

goto getpass ;

dem√°s

TextToSpeech . say ( "Para habilitar" );

OneSheeld . retraso ( 5000 );

}

conseguir pase :

TextToSpeech . decir ( "Do the Secret Twist" );

while ( orientación == 0 ) {

if (( OrientationSensor . getX () > 120 ) &&  ( OrientationSensor . getY () > 0 ))

{ orientación = 1 ;

romper ;}

dem√°s

OneSheeld . retraso ( 2000 );

}

TextToSpeech . say ( "Bloqueo de apertura" );

digitalWrite ( LockMotor1 , LOW );

digitalWrite ( LockMotor2 , HIGH );

retraso ( 5000 ); // Se necesitan aproximadamente 5 segundos para que la cerradura se abra por completo

digitalWrite ( LockMotor1 , LOW );

digitalWrite ( LockMotor2 , LOW );

retraso ( 1000 );

bloqueo =  1 ;

LogData ();

TextToSpeech . say ( "Bienvenido a IPAP" );

retraso ( 5000 );

OneSheeld . retraso ( 5000 );

while ( 1 ) {

VoiceRecognition . inicio ();

if ( VoiceRecognition . isNewCommandReceived () &&  VoiceRecognition . getCommandAsString () == lighton ) {

// Luces encendidas

TextToSpeech . say ( "Encendido de las luces" );

retraso ( 1000 );

digitalWrite ( Ligero , BAJO );

VoiceRecognition . clearCommand ();

OneSheeld . retraso ( 5000 ); // Este retraso se puede aumentar seg√ļn sus propios requisitos

}

if ( VoiceRecognition . isNewCommandReceived () &&  VoiceRecognition . getCommandAsString () == lightoff ) {

// Luz apagada

TextToSpeech . say ( "Apagar las luces" );

retraso ( 1000 );

digitalWrite ( Ligero , ALTO );

VoiceRecognition . clearCommand ();

OneSheeld . retraso ( 5000 );

}

if ( VoiceRecognition . isNewCommandReceived () &&  VoiceRecognition . getCommandAsString () == lockpass ) {

// Bloquear IPAP

TextToSpeech . decir ( "Luces apagadas" );

OneSheeld . retraso ( 2000 );

digitalWrite ( Ligero , ALTO );

OneSheeld . retraso ( 2000 );

// Cerrar cerradura lineal electrónica

TextToSpeech . say ( "Bloqueando" );

digitalWrite ( LockMotor1 , HIGH );

digitalWrite ( LockMotor2 , LOW );

retraso ( 5000 ); // Se necesitan aproximadamente 5 segundos para que la cerradura se cierre por completo

digitalWrite ( LockMotor1 , LOW );

digitalWrite ( LockMotor2 , LOW );

retraso ( 1000 );

bloqueo =  0 ;

LogData ();

OneSheeld . retraso ( 2000 );

TextToSpeech . say ( "Bloqueo completo. ¡Adiós!" );

VoiceRecognition . clearCommand ();

orientación = 0 ;

goto getpass ;

OneSheeld . retraso ( 5000 );

}

if ( Mic . getValue () > =  80 ) {

TextToSpeech . decir ( "No molestar a los dem√°s" );

retraso ( 2000 );

OneSheeld . retraso ( 5000 );

}

if ( VoiceRecognition . isNewCommandReceived () &&  VoiceRecognition . getCommandAsString () == imagen ) {

C√°mara . setFlash ( ENCENDIDO );

TextToSpeech . diga ( "C√°mara trasera encendida" );

C√°mara . rearCapture ();

OneSheeld . retraso ( 1000 );

TextToSpeech . diga ( "C√°mara frontal encendida" );

C√°mara . frontCapture ();

retraso ( 2000 );

VoiceRecognition . clearCommand ();

OneSheeld . retraso ( 5000 ); // Este retraso se puede aumentar seg√ļn sus propios requisitos

}

else {

retraso ( 100 );

OneSheeld . retraso ( 5000 );

}

}

}

else {

OneSheeld . retraso ( 5000 );

goto getpass ;

}

} // Fin del ciclo ()

void logdata ()

{

Logger . detener ();

OneSheeld . retraso ( 500 );

Logger . inicio ( "Entrada y Salida" );

if ( lock ==  1 ) {  // La cerradura se ha abierto

Logger . agregar ( "Entrada / Salida" , "Entrada" );

Logger . log (); }

else {  // El bloqueo se ha cerrado

Logger . agregar ( "Entrada / Salida" , "Salida" );

Logger . log (); }

Logger . detener ();

}

Morse uitstoot

Morse uitstoot

U kan u Arduino-ontwikkelbord gebruik om dit in ‘n moerse sender te verander. Deur ‘n Arduino-bord met ‘n LED en ‘n 22 Ohm-weerstand te koppel, kan ‘n SOS-boodskap met moerse taal gestuur word. Hiervoor benodig u ‘n Arduino UNO-bord, ‘n generiese led, ‘n fotosel en ‘n gonser. U moet ook verbindings en kabels insluit om die elemente aan te sluit.

As u alles gereed het, kyk na die prentjie om by die komponente aan te sluit en open die Arduino-programmeeromgewing om die volgende in te voer:

const char* MorseTable[] = {

NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

// space, !, ", #, $, %, &, '

NULL, "-.-.--", ".-..-.", NULL, NULL, NULL, NULL, ".----.",

// ( ) * + , - . /

"-.--.", "-.--.-", NULL, ".-.-.", "--..--", "-....-", ".-.-.-", "-..-.",

// 0 1 2 3 4 5 6 7

"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...",

// 8 9 : ; < = > ?

"---..", "----.", "---...", "-.-.-.", NULL, "-...-", NULL, "..--..",

// @ A B C D E F G

".--.-.", ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",

// H I J K L M N O

"....", "..", ".---", "-.-", ".-..", "--", "-.", "---",

// P Q R S T U V W

".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--",

// X Y Z [  ] ^ _

"-..-", "-.--", "--..", NULL, NULL, NULL, NULL, "..--.-",

// ' a b c d e f g

NULL, ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",

// h i j k l m n o

"....", "..", ".---", "-.-", ".-..", "--", "-.", "---",

// p q r s t u v w

".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--",

// x y z { | } ~ DEL

"-..-", "-.--", "--..", NULL, NULL, NULL, NULL, NULL,

};

int dotLength = 50;

int dashLength = dotLength*3;

void setup() {

// put your setup code here, to run once:

pinMode(13, OUTPUT);

begin(9600);

}

void loop() {

char ch;

if(Serial.available()){

ch = Serial.read();

flashDashDot(MorseTable[ch]);

delay(dotLength*2);

}

}

void flashDashDot(const char * morseCode)

{

int i = 0;

while(morseCode[i] != 0)

{

if(morseCode[i] == '.'){

dot();

} else if (morseCode[i] == '-'){

dash();

}

i++;

}

}

void dot()

{

digitalWrite(13, HIGH);

delay(dotLength);

digitalWrite(13, LOW);

delay(dotLength);

}

void dash()

{

digitalWrite(13, HIGH);

delay(dashLength);

digitalWrite(13, LOW);

delay(dotLength);

}

Sleutelbordblokker

Sleutelbordblokker

Soos ons voorheen gesien het, kan Arduino gebruik word as ‘n stelsel om verskillende soorte dinge te beskerm, soos om die sleutelbord van u rekenaar te sluit. Jy kan ook integreer ‘n sleutelbord in u bord om gemakliker te werk en meer funksies te benut. In hierdie projek benodig u ‘n Arduino UNO, ‘n 1N4148 halfgeleier, penne, 74HC595 skofregister, skakelaar en kabels. Om al hierdie komponente te verenig, is dit nodig dat u na die beeld kyk wat u aan u bied.

Hierna kan u die instruksies in die IDE-program skryf:

int rowData = 2; // shift register Data pin for rows

int rowLatch = 3; // shift register Latch pin for rows

int rowClock = 4; // shift register Clock pin for rows

int colA = A0;

int colB = A1;

int colC = A2;

int colD = A3;

int colE = A4;

int colF = A5;

int colG = 5;

int colH = 6;

byte shiftRows = B11111111;

long previousMillis = 0;

long interval = 5;

int lastKey = 0;

int keyReset = 0;

int keysPressed = 0;

bool caps = false;

bool rShift = false;

bool lShift = false;

bool shift = false;

bool ctrl = false;

bool spcl = false;

bool alt = false;

bool fn = false;

void setup() {

begin(9600);

pinMode(colA, INPUT_PULLUP);

pinMode(colB, INPUT_PULLUP);

pinMode(colC, INPUT_PULLUP);

pinMode(colD, INPUT_PULLUP);

pinMode(colE, INPUT_PULLUP);

pinMode(colF, INPUT_PULLUP);

pinMode(colG, INPUT_PULLUP);

pinMode(colH, INPUT_PULLUP);

// the outputs needed to control the 74HC595 shift register

pinMode(rowLatch, OUTPUT);

pinMode(rowClock, OUTPUT);

pinMode(rowData, OUTPUT);

updateShiftRegister(B11111111);

}

void loop() {

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {

previousMillis = currentMillis;

checkKeyboard();

}

}

void updateShiftRegister(byte rows) {

digitalWrite(rowLatch, LOW);

shiftOut(rowData, rowClock, MSBFIRST, rows);

digitalWrite(rowLatch, HIGH);

}

void checkKeyboard() {

keysPressed = 0;

updateShiftRegister(B11111110);

if (digitalRead(colA) == LOW) {

keysPressed = keysPressed + 1;

if (lastKey != 1) {

if (fn == true) {

// no fn definition

} else if (spcl == true) {

// no spcl definition

} else if (alt == true) {

print(" ");

} else if (ctrl == true) {

print(" ");

} else if ((caps == true) && (shift == true)){

print(" "); // if shift is pressed while caps lock is active

} else if ((caps == true) || (shift == true)){

print(" "); // if either shift or caps lock are active, but not both

} else {

print(" "); // if no modifiers are active

}

lastKey = 1;

keyReset = 0;

}

}

if (digitalRead(colB) == LOW) {

}

if (digitalRead(colC) == LOW) {

}

if (digitalRead(colD) == LOW) {

}

if (digitalRead(colE) == LOW) {

fn = true;

} else {

fn = false;

}

if (digitalRead(colF) == LOW) {

}

if (digitalRead(colG) == LOW) {

}

if (digitalRead(colH) == LOW) {

}

//realiza el mismo procedimiento hasta el lastKey31 o hasta el que t√ļ prefieras programa

keyReset = 0;

}

}

if ((lShift) || (rShift)) {

shift = true;

} else {

shift = false;

}

updateShiftRegister(B11111111);

keyReset = keyReset + 1;

if (keyReset > 60) {

lastKey = 0;

keyReset = 0;

}

if (keysPressed == 0) {

lastKey = 0;

}

}

Parkeersensor

Parkeersensor

Die doel van hierdie projek, is om met behulp van LED’s ‘n klank- en ligmeganisme te ontwikkel wat die nabyheid of afstand van a opspoor motor as jy wil parkeer. U moet ‘n UNO-model van Arduino, ‘n zoemer, ‘n HC-SR04 ultrasoniese sensor en kabels h√™ wat die verbinding van die komponente toelaat volgens die diagram wat ons u wys.

Dan moet u die volgende reekse skryf om u bord te programmeer:

#include <Ultrasonic.h>

Ultrasonic ultrasonic(6,5);

// pin 6 trig , pin 5 echo

const int buzzer = 7;

void setup(){

pinMode(buzzer,OUTPUT); // pin buzzer

}

void loop(){

int dist = ultrasonic.Ranging(CM);

if (dist < 100) { distance

tone(buzzer,1000);

delay(40);

noTone(buzzer);

delay(dist*4);

}

delay(100);

}

Een dobbelsteen simulator

As jy wil speel ‘n bordspel, maar u het nie ‘n dobbelsteen daarvoor nie, jy kan joune met ‘n Arduino skep. Met ‘n 7-segment vertoning, ‘n plaat, ‘n knoppie, 220 en 10 k weerstande, kan u ‘n kubus maak gee ewekansige getalle 1 tot 6.

Robotarm

U kan ‘n robotarm maak wat die vermo√ę om voorwerpe met ‘n pincet op te telDaarbenewens kan u ultrasoniese sensors daarby voeg om botsings met hindernisse te voorkom. Die skep van ‘n robotarm met Arduino is nie so ingewikkeld nie, maar effektief.

Flikkerende liggies

Flikkerende liggies

Met ‘n Arduino-bord kan u ‘n baie eenvoudige program skep om ‘n LED te laat knip. U het ‘n weerstand van 10 ohm nodig, manlike tot manlike springdrade en ‘n generiese led. Dan sal u die komponente moet aansluit soos aangedui in die afbeelding en uiteindelik die programmeringsplatform moet oopmaak.

In hierdie sagteware moet u skryf:

configuración vacía () {

pinMode ( 13 , SALIDA ) ;

}

bucle vacío () {

escritura digital ( 13 , ALTA ) ;

retraso ( 1000 ) ;

digitalWrite ( 13 , BAJO ) ;

retraso ( 1000 ) ;

Bewegingsherhaler

Bewegingsherhaler

Met hierdie projek kan u die verbindings tussen die Arduino-bord en ander komponente oefen. Op hierdie manier sal u ‘n toestel h√™ wat u bewegings en gebare weergee die volume van die luidspreker kan verhoog of verlaag.

Nadat u ‘n Nano R3-model gekry het, ‘n TPA81 8-pixel termiese skyfsensor, ‘n HC-SR505 infrarooi PIR-tipe aksiesensor, ‘n generiese broodbord, ‘n OLED-skerm van 0,96 duim en springkabels tussen man en vrou. Om al hierdie elemente saam te stel, moet u lei deur die beeld wat ons u wys.

As u alles gereed het, moet u die volgende reekse in die Arduino-programmeeromgewing skryf:

#include <Wire.h>

#include <TPA81.h>

// Create new TPA81 instance

TPA81 tpa;

void setup() {

begin(9600);

// You need to begin the Wire library to use TPA81 library

begin();

}

void loop() {

// Print temperature light

print(tpa.getAmbient());

print(" ");

// Print all temperature point

for (int i = 1; i <= 8; i++)

{

print(tpa.getPoint(i));

print(" ");

}

println("n");

delay(500);

}

Die belangrikste Arduino-kits om te leer om hardeware van nuuts af te ontwikkel

As u enige projek wil uitvoer, jy moet eers ‘n span h√™ wat u as ondersteuning vir u werk kan gebruik.

Om hierdie rede bied ons ‘n lys van die mees gebruikte Arduino-kits aan, sodat u u ontwerpe maklik kan maak:

Arduino-aanvangskit vir beginners K030007

Arduino-aanvangskit vir beginners K030007

Dit is een van die mees prominente, aangesien Dit is die amptelike Arduino-aanvangskit. Hierdie elemente sal u help om die basiese en tegniese konsepte beter te verstaan ‚Äč‚Äčsodat u die elektroniese w√™reld hiermee kan betree begin, sal u projekte sonder foute begin ontwerp.

Onder die komponente wat u in die kit sal vind, is ‘n Arduino UNO Rev3-bord, verskillende weerstande, ‘n stel drukknoppies, aansluitkabels, ligte in verskillende kleure van LED’s en sensors, en vele meer. Die handleiding is in Spaans en u kan dit teen ‘n prys van ‚ā¨ 95 kry.

ELEGOO ES-EL-KIT-008

Die maatskappy ELEGOO, gebaseer op gratis hardewarebemarking, beoog om ‘n Arduino-aanvangskit te skep vir gebruik deur enige soort ontwikkelaar, ongeag jou vlak of waar u in die w√™reld is.

Gewoonlik, word beskou as een van die volledigste en doeltreffendste van die onderneming, en het ‘n benaderde van 200 materiale om aan enige projek te werk. As u nie weet waarmee u moet begin nie Moenie bekommerd wees nie!, want dit bevat ook ‘n lys met meer as 30 take om te doen. U kan dit vir ‚ā¨ 30 tot ‚ā¨ 55 kry, afhangende van die aantal elemente wat die kit bevat.

Mega 2560 Starter Kit Ultra

Nog ‘n interessante opsie om ‘n projek te begin Dit is die Arduino Mega 2560 Starter Kit Ultra-stel. Dit is ‘n verskeidenheid nuttige elemente, en het addisionele instrumente om in basiese stroombane en maklike werk te gebruik. Soos die vorige twee, bevat ‘n stap-vir-stap hulpgids in Spaans, asook spesifieke tutoriale binne ‘n CD vir die ontwikkeling van enige projek. Sy 220 elemente kan vir ongeveer ‚ā¨ 50 gekoop word.

As u vrae het, laat dit in die kommentaar, ons sal u so spoedig moontlik antwoord, en dit sal ook vir meer lede van die gemeenskap van groot hulp wees. Dankie! ūüėČ

Mario Jose

Skrywer: Mario José

Afgestudeer in joernalistiek, gespesialiseerd in ondersoek, soek ek die waarheid van alle dinge. Nou is 100% gefokus op tegnologie, rekenaars en die internet.

U mag ook belangstel:

Leave a Comment