
den Arduino-kort De er alsidige elektroniske enheder, der er meget populære blandt brugerne.Dette skyldes dens lave pris og alle de funktioner, den tilbyder. En af dens mest bemærkelsesværdige fordele er den brugervenlighed, som programmeringsmiljøet tilbyder.
Derfor, hvis du ønsker at udføre et projekt, Arduino IDE Det vil ikke være til ulejlighed for dig, selvom du har begrænset computerkendskab.
Men det betyder ikke, at du ikke skal kende alle hemmelighederne bag Arduino-programmering. Du finder disse oplysninger nedenfor, så vi opfordrer dig til at læse videre.
Hvad er Arduino-programmering, og hvad er dens vigtigste grundprincipper?
Det første du bør vide er, at Arduino er et lille printkort med integrerede digitale kredsløb, der bruges til at bygge en bred vifte af enheder. For at gøre dette skal du programmere dette printkort ved hjælp af... kode, der udføres i et miljø kaldet et IDE. I denne applikation til udvikling på tværs af platforme, Linjerne med programmeringskode indtastes i IDE'en. at automatisere de opgaver, som Arduino udfører.
Dette er muligt takket være de aflæsninger, som sensorerne foretager, og som derefter transmitteres til aktuatorerne i det digitale projekt. Et tydeligt eksempel på dette ville være Byg et trafiklys med ArduinoFor at gøre dette er det nødvendigt (forklaret generelt) at skrive koderne, forbinde de forskellige LED'er til de digitale og analoge ben, Tilfør elektrisk strøm og vent på, at printpladen interagerer med omgivelserne..
IDE'en er et simpelt program, der kræver nogle værktøjer til at kompilere programmet og fjerne det fra hukommelsen. Processoren er den software, der ikke længere bruges. Et af disse værktøjer er skissen, som er tildelt hvert projekt, du vil oprette (derfor kaldes skissen ofte et projekt). Det er vigtigt at huske på den mappe, der skal indeholde skissen. Den skal tilhøre en mappe, der skal have samme navn som projektet.Ellers vil filen ikke blive genkendt.
Strukturen af et projekt bør altid starte på samme måde:
void setup() { // Det er her, du begynder at skrive koden, der skal køres } void loop() { // Dette tillader koden at køre i et loop }
Dette gør det muligt Indkapsle kodeblokkene og få dem til at gentage sig kontinuerligt for at bevare programmets instruktioner og deklarationerDet er vigtigt at præcisere, at Opsætning() Det vil altid være den funktion, der er ansvarlig for at indsamle alle data til konfiguration og løkke () Det gør det muligt at gentage programmet konstant, så projektet giver mening.
Alt ovenstående kan gemmes i et bibliotek således at dette sæt af funktioner kan defineres godt af programmøren og bruges uden at skulle genetablere hvert af kodetrinene.
Endvidere IDE'en giver dig mulighed for at indsætte kommentarer i programmeringen for at oprette en funktionsdeklaration eller for at introducere biblioteket eller programmet.For at gøre dette er det nødvendigt at fastsætte nogle regler, der tillader, at korte eller lange kommentarer ignoreres. Arduino. Alt, hvad der findes Afsnittet mellem /* og */ tages ikke i betragtning gennem programmeringsmiljøet.
For eksempel:
/* Internet Paso a Paso Arduino-kursus * Dette er et grundlæggende trafiklysprogram, der hjælper dig med at forstå de forskellige kommandoer og argumenter på et Arduino-board. Det tænder en rød LED i et sekund, derefter en gul LED, mens den røde slukker, og slukker derefter for at tænde den grønne, og så videre... Ben 13 vil blive brugt, selvom dette afhænger af din Arduino-boardmodel og de komponenter, du vil tilføje. En modstand vil også blive inkluderet, hvis det er nødvendigt. * Mere information https://internetpasoapaso.com/cursos-online-gratis/informatica/arduino/ */
Det er også muligt at lave kommentarer på samme linje. inklusive i begyndelsen af det //Dette gør det muligt for programmet at undgå at tage disse parametre i betragtning, men hjælper udviklere med at forstå årsagen til at inkludere den pågældende kode.
Et eksempel på dette er:
int ledPin = 13; // conectamos el LED al pin 13, pero debes tener en cuenta el modelo de tu placa de Arduino
Variabler er faktorer, som du også skal tage højde for For at spare tid i programmeringen. Det er et område, der bruges til at gemme data, som skal indeholde et navn, en type og en værdi. I overensstemmelse med trafiklys-eksemplet er det blevet brugt som en variabel. int ledPin = 13. Hvor int er typen af variabel, ledPin dit navn og 13 Den værdi, der er tildelt en nål på brættet. Dette giver mulighed for hurtige ændringer i skitsen, hvis nåletildelingen ændres.
Sættet af variabler, der kan findes i et program, omfatter blandt andet:
- Konstanter: sandt, hel, højt og lavt.
- Type af data: array og bool-byte.
- Omfang og kvalifikationer: konstant, omfang og volatil
- konvertering: float, long, ord, streng og byte.
- Andre: PROGMEM størrelse af, usigneret tegn og usigneret lang.
Endelig Funktionerne forbliverhvilke er de procedurer, der skal inkluderes i koden således at brættet, gennem sine sensorer, udfører en specifik handling.
Der er et stort antal funktioner, som kan opdeles i:
- Digital indgang og udgang
- Analog indgang og udgang
- Matematik
- Tilfældige tal
- Bits og bytes
- Specielt designet til Zero-, Due- og MKR-bundkort
- Trigonometri
- Eksterne afbrydelser
- Tegn
- Avanceret ind- og udgang
- Afbrydelser
- Tid
- Kommunikation
- USB
Et eksempel på brugen af funktioner er:
/* Alt mellem krøllede parenteser { } kaldes funktionens brødtekst *Det bruges til at forstå alt, hvad funktionen gør */ void setup() { pinMode(ledPin, OUTPUT); // Denne kode kalder pinMode-funktionen ved hjælp af // to parametre ledPin og OUTPUT // pinMode fungerer som en input- og outputfunktion }
En vejledning du kan øve dig i at tænde LED'en på dit printkort er som følger:
/*
Internet Paso a Paso
LED på pin 2 på Arduino-kortet. Mere information: https://internetpasoapaso.com/cursos-online-gratis/informatica/arduino/ */ // Digital pin 2 får tildelt et navn: int pushButton = 2; // Opsætningsrutinen starter, når der trykkes på nulstillingsknappen: void setup() { // Seriel kommunikation startes med 9600 bits pr. sekund: begin(9600); // Ændrer pinens input til at blive et input: pinMode(pushButton, INPUT); } // Dette får løkken til at gentage sig igen og igen: void loop() { // For at læse printkortets input-pin: int buttonState = digitalRead(pushButton); // Knaptilstand: println(buttonState); delay(1); // En forsinkelse er indstillet for at forbedre processtabiliteten }
Programmeringstyper i Arduino: Hvilke typer findes der indtil videre?
Der er i øjeblikket to programmeringsmetoder, du kan bruge med Arduino. En af dem er fysisk databehandling eller udvikling af fysiske computere Det består i at koordinere software og hardwares handlinger for at interagere med mennesker. Dette gøres ved hjælp af tastatur og mus, blandt andre elementer. Denne metode Det er nyttigt til projekter, der udføres på en simpel måde. og det kræver ikke store tekniske fremskridt.
Generelt involverer det at bruge sensorerne og mikrocontrollerne på Arduino-kortet ved at forbinde analoge elektromekaniske enheder. Dette gør det muligt at styre belysning, servoer og motorer. Mens den anden type programmering kaldes realtids- eller reaktiv databehandling. Det er en måde at konfigurere et Arduino-kort til at reagere inden for en bestemt tidsramme via datamodtagelse og miljøinput.
Denne type programmering kræver større computerkendskab pga. Mikrocontrollerens svar skal gives i millisekunder.Til gengæld skal koden indeholde løkker, der fungerer korrekt, for at genstarte hele processen og forhindre fejl i programmering og drift.
Der findes forskellige operativsystemer, der bruger realtidsprogrammering, Dette adskiller det fra andre operativsystemer, der kan tage op til minutter om at reagere på brugerkommandoer. Et eksempel på dette er FreeRTOShvilket er et realtidsoperativsystem til mikrocontrollere, som du ikke kan downloade fra dets hjemmeside https://www.freertos.org/.
Grundlæggende krav til programmering i Arduino: Hvad skal jeg vide, før jeg starter i denne verden?
Hvis du vil blive ekspert i Arduino-programmering Du skal kende nogle grundlæggende koncepter, der vil hjælpe dig på dette område.
Se derfor på følgende liste, der vil guide dig gennem denne fase:
- Det første du bør vide er, hvad et Arduino-board er, og hvordan det er opbygget. Denne elektroniske komponent er et printkort, der indeholder integrerede kredsløb og forskellige stik, der gør det muligt for den at interagere med det eksterne miljø. Den omfatter blandt andet analoge og digitale stik, en strømindgang, en jordforbindelse, en spændingsregulator og et ur.
- Når du ved, hvad et Arduino-kort er, skal du kende dets model.Mange tror, at alle Arduino-boards er ens, hvilket er forkert, fordi der findes forskellige versioner, der er bedre egnet til hver brugers behov på grund af de funktioner og egenskaber, de tilbyder. Det er derfor vigtigt at vide, hvilken model board du har.
- Ovenstående vil hjælpe dig med at vide præcis, hvor alle ind- og udgange på printpladen er placeret. Dette vil give dig en bedre forståelse af driftsspændingsområdet, antallet af digitale og analoge ben, mikroprocessoren og andre funktioner. Kendskab til disse detaljer vil hjælpe dig med at bestemme, hvilke typer projekter du kan påtage dig.
- Når du kender hardwaren, er det tid til at se på softwaren. Arduino-programmeringsmiljøet er Integrated Development Environment, eller IDE. Det er et gratis og open source-program, der kører på Windows, macOS og Linux, hvilket gør det til et alsidigt værktøj. Det understøtter programmeringssprogene C og C++.
- Dernæst skal du downloade IDE'en gratis. For at gøre dette skal du bruge en computer med et af de operativsystemer, vi nævnte før, og derefter tilgå siden med din browser
https://www.arduino.cc/en/softwareDette giver dig mulighed for at vælge det operativsystem, du har installeret, og fortsætte med trinnene på en enkel måde. - Når du har installeret programmet, skal du gå til skrivebordet. og klik på den genvej, som softwaren har oprettet. Dette åbner en ny skitse, som indeholder de to første nødvendige programmeringskommandoer. Opsætning() y løkke ().
- Forstå programmeringsstrukturen. I dette trin skal du forstå programmeringsstrukturen, herunder hvad et projekt, en funktion, en variabel og et argument er. Du finder disse oplysninger i de foregående afsnit af dette indlæg. Gå til dem, så finder du alt, hvad du behøver.
Arduino programmeringsmanual: Hvor kan jeg downloade denne vejledning til begyndere inden for programmører?
Der er forskellige steder, hvor du kan Download en Arduino programmeringsmanual for begyndereDu skal dog være opmærksom på, at nogle ikke er så nemme, som de ser ud til, andre indeholder ødelagt kode, og nogle kræver en betydelig investering. Derfor anbefaler vi, at du downloader en komplet, virusfri guide til Arduino-softwareudvikling, der sikrer, at den er sikker og fri for virus.
Du kan downloade programmeringsmanualen til Arduino fra dens hjemmeside. link her. Dette er et projekt, der viser strukturen, variablerne og datatyperne, du kan bruge i programmering. Derudover finder du en komplet guide til kommunikation mellem Arduino og andre programmeringssystemer, hvordan man sender on-demand, og hvordan man konverterer en analog port til digital.
Lær trin for trin, hvordan de forskellige måder at programmere Arduino på fungerer fra bunden
Nedenfor viser vi dig den trinvise proces, du skal følge for at programmere Arduino fra bunden:
Programmering med Android
Du kan bruge din Android-smartphone eller -tablet til at programmere et Arduino-board; se nedenfor for proceduren:
- Den første ting du skal gøre er at downloade applikationen ArduinoDroid – Arduino/ESP8266/ESP32 IDE fra Google Play Butik.
- Så Tilslut et OTG- eller USB-kabel til ArduinoenDette afhænger af boardmodellen. Hvis Arduino-versionen er ADK, er det endnu bedre, da denne model er designet til at være kompatibel med Android.
- Tilslut boardet til din computer via USB.
- Gå til øverste hjørne af skærmen, og tryk på 3 pointDette vil implementeres menuen med valgmuligheder.
- Klik på det sidste værktøj, Tilføj tilstand.
- Dette åbner en ny menu, hvor du skal indtaste ADK i søgefeltet. Når du er færdig, skal du trykke på [knapnavn]. søgning.
- Når du har fundet muligheden, skal du klikke på den og derefter trykke på installereDu kan også udføre dette trin ved at downloade filen
http://processing.arduino.cc/AdkMode.zip.
Når du har gennemført de foregående trin, skal du downloade Arduino-bibliotekerne ved at følge denne vejledning:
- Lavt indhold
http://processing.arduino.cc/UsbHost.zipfilen UsbHost.zip. - Når du har pakket filen ud, finder du mappen USB-ADKVælg den og flyt den til Arduino Skitsebog.
- Sluk og tænd igen Arduino-kortet.
Installer nu Android SDK'et:
- Indtast til
http://developer.android.com/sdk/index.htmlog klik på knappen DOWNLOAD ANDROID STUDIO. - Følg trinene som installationsguiden vil bede dig om.
- åbner SDKManagerDu finder en liste over alle tilgængelige værktøjer. Vælg Android 3.1.
- Accepter vilkårene for brug og platformsikkerhedspolitikker.
Aktivér din enhed som udvikler. Følg disse trin for at gøre dette:
- Log ind til din Android-menu.
- Vælg konfigurationer.
- Klik på funktionen Om telefonen.
- Tryk gentagne gange (i nogle modeller er det 6 og i andre er tallet 8) i funktionen Bygge nummerDette vil aktivere udviklermuligheden.
- Gå tilbage og tryk på Udviklerindstillinger.
- Aktivér funktionen ADB-fejlfinding via USB.
Installer driverne på din telefon, og udfør en analog læsetest ved hjælp af denne vejledning:
- åbner Behandles og vælg ADK-tilstand i venstre hjørne.
- Gå til menuen og vælg værktøjet Arkiv.
- Find funktionen Eksempler og vælg det.
- Klik på basics og vælg derefter værktøjet Analoglæsning.
- Vælg Kør på enheden og vent et par minutter.
- Du vil se en kode, som du skal kopier det ind i Arduino IDE'enDette giver dig mulighed for at forbinde Arduinoen til den mobile enhed og sikre kompatibilitet.
- Efter et par sekunder, tryk på belastning.
- tryk tilbage for at lukke appen.
- Koble fra Tilslut computerens USB-kabel til Arduinoen.
- Hvis du har udført alle trinene korrekt Du finder et skilt på din telefonskærm spørger dig, om du virkelig vil tilslutte et Arduino-kort, så du skal trykke på Ok.
Prøv disse eksempelkoder for at se, om du har gennemført processen korrekt:
#include <LiquidCrystal.h>
#include <Servo.h>
#include <Wire.h>
#include <RFID.h>
#include <SPI.h>
Servo doorservo;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int inputPin = 6;
int pirState = LOW;
int val = 0;
#define SS_PIN 9
#define RST_PIN 8
RFID rfid(SS_PIN,RST_PIN);
int serNum[5];
int cards[5] = {128,169,132,122,215};
int checkcard[5];
int loopcounter=0;
int chicagofirecheck;
int chicagofire;
int rfidcounter;
int r1 = 22;
int r2 = 24;
int r3 = 26;
int r4 = 28;
int c1 = 30;
int c2 = 32;
int c3 = 34;
int c4 = 36;
int colm1;
int colm2;
int colm3;
int colm4;
int a, b, c, d, e, f;
int buzzer=38;
int pos=0; // para ubicar la posición del servomotor
static int x[4];
static int y[4];
static int i, j, p, s, k;
int initial = 0, attempts = 0;
int count = 0;
int error;
void setup()
{
pinMode(r1, OUTPUT);
pinMode(r2, OUTPUT);
pinMode(r3, OUTPUT);
pinMode(r4, OUTPUT);
pinMode(c1, INPUT);
pinMode(c2, INPUT);
pinMode(c3, INPUT);
pinMode(c4, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(7, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(buzzer, LOW);
begin();
// pinMode(inputPin, INPUT); // sensor entrada
begin(9600);
attach(10); // conecta el servomotor al pin 38
begin();
init();
digitalWrite(c1, HIGH);
digitalWrite(c2, HIGH);
digitalWrite(c3, HIGH);
digitalWrite(c4, HIGH);
begin(9600);
begin(16, 2);
clear();
}
void loop()
{
if (initial == 0)
newpassword();
if (attempts < 3)
enterpassword();
if (attempts >= 3)
lockdoor();
if (count == 4)
{
println("control de claves");
rfidcounter=0;
loopcounter=0;
clear();
setCursor(0,0);
print("control de claves");
delay(1000);
clear();
setCursor(0,0);
print("Por favor, identifíquese");
setCursor(0,1);
print("RFID tag");
while(rfidcounter==0)
{
if(rfid.isCard())
{
if(rfid.readCardSerial())
{
checkcard[0]= rfid.serNum[0];
checkcard[1]= rfid.serNum[1];
checkcard[2]= rfid.serNum[2];
checkcard[3]= rfid.serNum[3];
checkcard[4]= rfid.serNum[4];
for(chicagofire=0; chicagofire<5; chicagofire++)
{
if(checkcard[chicagofire]==cards[chicagofire])
{
chicagofirecheck++;
}
}
}
}
delay(1000);
loopcounter++;
if(loopcounter==5)
{
rfidcounter=1;
}
}
if((chicagofirecheck==5)||(chicagofirecheck==10)||(chicagofirecheck==15)||(chicagofirecheck==20)||(chicagofirecheck==25))
{
clear();
setCursor(0,0);
print("Bienvenido");
digitalWrite(13, HIGH);
delay(2000);
delay(500);
for(pos=90; pos>=0; pos--)
{
write(pos);
delay(50);
}
clear();
attempts = 0;
count = 0;
error = 0;
initial = 1;
delay(5000);
println(" La puerta se cerrará en 10 segundos ");
setCursor(0,0);
print("Se cerrará en 10 seg");
for (s = 10; s >= 0; s--)
{
clear();
print("Cerrando");
setCursor(11,0);
print(s);
setCursor(13,0);
print("sec");
delay(1000);
}
for(pos=0; pos<90; pos++)
{
write(pos);
delay(50);
}
clear();
print("Puerta cerrada");
println("Puerta cerrada");
digitalWrite(13, LOW);
delay(1000);
chicagofirecheck=0;
}
else
{
clear();
setCursor(0,0);
print("Sorry RFID");
setCursor(0,1);
print("doesn't match");
digitalWrite(7, HIGH);
delay(5000);
attempts = 0;
count = 0;
error = 0;
initial = 1;
chicagofirecheck=0;
digitalWrite(7 , LOW);
}
}
if (error > 0)
{
println(" Clave incorrecta");
clear();
setCursor(0, 0);
print("Clave incorrecta");
digitalWrite(7, HIGH);
delay(2000);
initial = 1;
attempts++;
error = 0;
count = 0;
digitalWrite(7, LOW);
}
}
void newpassword() //sirve para crear una nueva clave de acceso
{
clear();
println(" Ingrese una nueva clave ");
setCursor(0,0);
print("Ingrese una nueva clave");
while (1)
{
digitalWrite(r1, LOW);
digitalWrite(r2, HIGH);
digitalWrite(r3, HIGH);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
x[i] = 1;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm2 == LOW)
{
x[i] = 2;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm3 == LOW)
{
x[i] = 3;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm4 == LOW)
{
x[i] = 10;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, LOW);
digitalWrite(r3, HIGH);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
x[i] = 4;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm2 == LOW)
{
x[i] = 5;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm3 == LOW)
{
x[i] = 6;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm4 == LOW)
{
x[i] = 11;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
digitalWrite(r3, LOW);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
x[i] = 7;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm2 == LOW)
{
x[i] = 8;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm3 == LOW)
{
x[i] = 9;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm4 == LOW)
{
x[i] = 12;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
digitalWrite(r3, HIGH);
digitalWrite(r4, LOW);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
x[i] = 15;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm2 == LOW)
{
x[i] = 0;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm3 == LOW)
{
x[i] = 14;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
else
{
if (colm4 == LOW)
{
x[i] = 13;
println(x[i]);
setCursor(i,1);
print(x[i]);
delay(400);
i++;
}
}
}
}
if (i == 4)
{
break;
}
}
clear();
}
void enterpassword() //para controlar la clave
{
clear();
println("Ingrese la clave");
setCursor(0, 0);
print("Ingrese la clave de acceso");
while (1)
{
val = digitalRead(inputPin);
if (val == HIGH)
{
if (pirState == LOW) {
println("Detección de movimiento");
pirState = HIGH;
opendoor();
}
}
if(val==LOW) {
if (pirState == HIGH){
println("Movimiento finalizado");
pirState = LOW;
closedoor();
}
}
digitalWrite(r1, LOW);
digitalWrite(r2, HIGH);
digitalWrite(r3, HIGH);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
y[j] = 1;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm2 == LOW)
{
y[j] = 2;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm3 == LOW)
{
y[j] = 3;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm4 == LOW)
{
y[j] = 10;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, LOW);
digitalWrite(r3, HIGH);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
y[j] = 4;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm2 == LOW)
{
y[j] = 5;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm3 == LOW)
{
y[j] = 6;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm4 == LOW)
{
y[j] = 11;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
digitalWrite(r3, LOW);
digitalWrite(r4, HIGH);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
y[j] = 7;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm2 == LOW)
{
y[j] = 8;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm3 == LOW)
{
y[j] = 9;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm4 == LOW)
{
y[j] = 12;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
}
}
}
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
digitalWrite(r3, HIGH);
digitalWrite(r4, LOW);
colm1 = digitalRead(c1);
colm2 = digitalRead(c2);
colm3 = digitalRead(c3);
colm4 = digitalRead(c4);
if (colm1 == LOW)
{
y[j] = 15;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm2 == LOW)
{
y[j] = 0;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm3 == LOW)
{
y[j] = 14;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
else
{
if (colm4 == LOW)
{
y[j] = 13;
println(y[j]);
setCursor(j,1);
print("*");
delay(400);
j++;
}
}
}
}
if (j == 4)
break;
}
clear();
check();
}
void check()
{
clear();
println("Verificando");
setCursor(0, 0);
print("Verificando");
delay(1000);
for (k = 0; k < 4; k++)
{
if (x[k] == y[k])
{
count++;
i = 0;
j = 0;
}
else
{
error++;
i = 0;
j = 0;
}
}
}
void lockdoor()
{
println(" La Puerta se cerró");
clear();
setCursor(0, 0);
print("puerta cerrada");
digitalWrite(7, HIGH);
delay(1000);
clear();
int op=1;
beginTransmission(9);
write(op);
endTransmission();
delay(500);
for (p = 30; p >= 0; p--)
{
if(p<10)
{
digitalWrite(buzzer, HIGH);
delay(100);
clear();
print("try after");
setCursor(10,0);
print(p);
setCursor(13,0);
print("sec");
delay(1000);
}
else
{
digitalWrite(buzzer, HIGH);
delay(100);
clear();
print("try after");
setCursor(10,0);
print(p);
setCursor(13,0);
print("sec");
delay(1000);
}
digitalWrite(38, LOW);
digitalWrite(7, LOW);
delay(100);
}
attempts = 0;
}
void opendoor()
{
digitalWrite(13, HIGH);
for(pos=100; pos>=0; pos--)
{
write(pos);
delay(50);
}
delay(20000);
attempts=0;
}
void closedoor()
{
for(pos=0; pos<100; pos++)
{
write(pos);
delay(50);
}
digitalWrite(13, LOW);
}
Blokprogrammering
En af fordelene det har Arduino er muligheden ved blokprogrammeringDet betyder, at et sæt prædesignet kode kan bruges og inkluderes i den overordnede udvikling. Dette giver mulighed for fremskridt, efterhånden som blokkene passer sammen og danner trin, der allerede er blevet løst af andre Arduino-brugere. For at udføre denne opgave kan du bruge forskellige udviklingsmiljøer, i dette tilfælde bruger vi UIFlow.
De trin, du skal tage, er:
- Få adgang til hjemmesiden ved hjælp af din betroede browser.
https://m5stack-store.myshopify.com/pages/downloadog så kig efter downloadknappen, der hedder M5BrænderDu finder dette i afsnittet Software. - Åbn derefter den eksekverbare fil, du lige har downloadet, og gå til M5Brænder.
- Gå til venstre panel og vælg indstillingen UIFlow (i sin seneste version).
- Indtast dit internetbrugernavn og din adgangskode. Dette giver dig mulighed for at konfigurere de nødvendige Wi-Fi-netværksindstillinger for tavlen, så den vises. En QR-kode med API'en vises på skærmen.Hvis du ikke vil gøre det via WiFi, kan du gøre det via en USB-port, som vi vil bruge til at fortsætte med eksemplet.
- Konfigurer feltet KOM (med den tilsvarende port) og baudrate (vælg 750000).
- Efter dette skal du trykke på Brænde.
- Så Du finder en skærm med udviklingen og information om hele miljøet.
Se på dette eksempel:
- Åbn programmeringsmiljøet. Skærmen er opdelt i to; den venstre side viser funktionsmenuen, mens den anden sektion er til programmeringsudvikling.
- I venstre panel Gå til topmenuen og vælg Emne.
- skriv et navn og træk den med musen til enhedstegningen.
- Vælg derefter "Skriv i feltet, når et vindue åbnes". tekst hvad end du har brug for.
- Når du har gennemført disse trin, skal du vende tilbage til menuen og vælge etiketEn række muligheder vises til højre; vælg den første.
- Det forrige trin er automatisk at placere gruppen af koder, der tilhører den pågældende etiket. Rediger menuen i label0 og skriv det, du vil have vist. For eksempel IP@P.
- Tryk derefter på Evento Vælg en knap. Træk den til programmeringssektionen, og definer, hvad du vil knytte den til. IMU, TRC, LED o AXP.
- Hvis du for eksempel vælger LED Du skal vælge, hvad knappen skal gøre. Det vil sige, om LED-lyset skal slukkes eller tændes.
- Når du er færdig med denne del, kan du trykke på gemDu skal huske på, at for at blokkene kan virke, skal du forbinde dem til kommandoerne; for at gøre dette skal du forbinde dem så tæt som muligt, indtil de får samme farve.
Programmering med Python
Fordelen ved Python er, at det ikke er nødvendigt at udføre hele processenI modsætning til andre sprog, hvor instruktioner indtastes, og programmet fortolker dem uden yderligere trin, er dette et ideelt miljø til at lære at programmere Arduino. De nuværende versioner af dette sprog er: Python y Python 3Sidstnævnte er den eneste, der modtager støtte.
Programmet kan startes fra en Linux-konsol ved hjælp af superuser-kommandoen. sudo apt-get install idle3Men hvis du ikke har Linux, fordi din computer har et Windows- eller MacOS-operativsystem, skal du bruge Thonny Python IDEFor at gøre dette skal du besøge https://thonny.org/ y vælg knappen med det tilsvarende operativsystem.
Når du har downloadet denne software, skal du kende disse emner for at programmere din Arduino:
- Variabler og data: Det er vigtigt at vide, at variabler kan have forskellige værdier og ændre sig afhængigt af det program, der udfører dem. I modsætning til andre miljøer er det i Python ikke nødvendigt at definere variabler, før de bruges.
- Lister: Disse elementer defineres, når dataene er omsluttet af firkantede parenteser og nummereres fra 0 til længden -1. Det er vigtigt at overveje, om de sidste elementer skal inkluderes eller ej.
- Tupler: Forskellen med lister er, at tupler indeholder dataene i parentes.
- Operatører: Der findes et stort antal operatorer, der giver dig mulighed for at udføre forskellige handlinger. De mest almindelige er aritmetiske operatorer, tildelingsoperatorer og relationelle trådoperatorer.
Når du har defineret disse begreber, skal du udføre følgende proces:
- Hvis du vil skrive Arduino-kursus i Internet Paso a PasoDu skal skrive følgende kommando i terminalen print("Arduino-kursus i Internet Paso a Paso").
- Dernæst kan du køre programmet ved at indtaste python3 uno.py.
At øve udfør eksemplet med Programmering af en vejrstation med Arduino.
Når du har åbnet programmet på din computer og kender porten, skal du skrive følgende:
~/Descargas/UIFlowIDE$ screen /dev/ttyUSB1 115200
Genstart enheden ved at trykke og holde nede i 6 sekunder for at slukke og 2 sekunder for at tænde, og indtast derefter følgende:
I (9) opstart: ESP-IDF v3.3-beta1-270-g6ffef3bc1 2. trin bootloader I (9) opstart: kompileringstid 09:26:17 I (9) opstart: Aktivering af tidlig entropikilde for RNG...
I (14) boot: SPI-hastighed: 80 MHz I (18) boot: SPI-tilstand: DIO I (22) boot: SPI-flashstørrelse: 4 MB I (26) boot: Partitionstabel: I (29) boot: ## Etiketbrugstype ST-offsetlængde I (37) boot: 0 nvs WiFi-data 01 02 00009000 00006000 I (44) boot: 1 phy_init RF-data 01 0 >>> I (9) boot: ESP-IDF v3.3-beta1-270-g6ffef3bc1 2. trin bootloader I (9) boot: kompileringstid 09:26:17 I (9) boot: Aktivering af tidlig entropikilde for RNG...
I (14) boot: SPI-hastighed: 80 MHz I (18) boot: SPI-tilstand: DIO I (22) boot: SPI Flash-størrelse: 4 MB I (26) boot: Partitionstabel: I (29) boot: ## Etiketbrugstype ST Offset-længde I (37) boot: 0 nvs WiFi-data 01 02 00009000 00006000 I (44) boot: 1 phy_init RF-data 01 01 0000f000 00001000 I (52) boot: 2 factory factory app 00 00 00010000 001e0000 I (59) boot: 3 internalfs Ukendte data 01 81 001f0000 00210000 I (52) boot: 2 factory factory app 00 00 00010000 001e0000 I (59) boot: 3 internalfs Ukendte data 01 81 001f0000 00210000 I (67) boot: Slut på partitionstabel I (71) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0xdad24 (896292) map I (337) esp_image: segment 1: paddr=0x000ead4c vaddr=0x3ffb0000 size=0x02e9c (11932) load I (341) esp_image: segment 2: paddr=0x000edbf0 vaddr=0x40080000 size=0x00400 (1024) load I (344) esp_image: segment 3: paddr=0x000edff8 vaddr=0x40080400 størrelse=0x02018 (8216) indlæs I (355) esp_image: segment 4: paddr=0x000f0018 vaddr=0x400d0018 størrelse=0xd3a10 (866832) kort I (611) esp_image: segment 5: paddr=0x001c3a30 vaddr=0x40082418 størrelse=0x116c0 (71360) indlæs I (634) esp_image: segment 6: paddr=0x001d50f8 vaddr=0x400c0000 størrelse=0x00064 (100) indlæs I (635) esp_image: segment 7: paddr=0x001d5164 vaddr=0x50000000 size=0x00808 (2056) load I (654) boot: Indlæste app fra partition ved offset 0x10000 I (654) boot: Deaktiverer tidlig entropikilde for RNG...
Jeg (655) cpu_start: Pro cpu op.
I (659) cpu_start: Programoplysninger: I (664) cpu_start: Kompileringstidspunkt: 09:26:24 I (669) cpu_start: Kompileringsdato: 10. juni 2019 I (674) cpu_start: ESP-IDF: 3-beta1-270-g6ffef3bc1 I (680) cpu_start: Starter app-CPU, startpunkt er 0x400831f4 I (0) cpu_start: App-CPU op.
I (691) heap_init: Initialiserer. RAM tilgængelig til dynamisk allokering: I (698) heap_init: Ved 3FFAE6E0 len 00001920 (6 KiB): DRAM I (704) heap_init: Ved 3FFB9970 len 00026690 (153 KiB): DRAM I (710) heap_init: Ved 3FFE0440 len 00003AE0 (14 KiB): D/IRAM I (716) heap_init: Ved 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM I (723) heap_init: Ved 40093AD8 len 0000C528 (49 KiB): IRAM I (729) cpu_start: Pro CPU start brugerkode I (75) cpu_start: Starter scheduler på PRO CPU.
I (0) cpu_start: Starter scheduler på APP CPU.
Intern FS (FatFS): Monteret på partitionen 'internalfs' [størrelse: 2162688; Flash-adresse: 0x1F0000] ---------------- Filsystemstørrelse: 2101248 B Brugt: 503808 B Ledig: 1597440 B ------------------ I (388) [TFTSPI]: tilsluttet displayenhed, hastighed=8000000 I (388) [TFTSPI]: bus bruger native pins: falsk [M5] node-id: 1234567890ab, api-nøgle: 12345678 I (4344) system_api: Basis-MAC-adresse er ikke angivet, læs standardbasis-MAC-adresse fra BLK0 for EFUSE I (4344) system_api: Basis-MAC-adresse er ikke angivet, læs standardbasis-MAC-adresse fra BLK0 for EFUSE I (4432) phy: phy_version: 4007, 1234567, 11. januar 2019, 16:45:07, 0, 0 I (4436) modsocket: Initialiserer Wi-Fi-forbindelse: SSID:Miwifi PASSWD:Mipass-netværk...
..................
Netværkskonfiguration: ('192.168.43.185', '255.255.255.0', '192.168.43.1', '192.168.43.1') M5Cloud forbundet.
m5cloud trådstart .....
Tryk derefter på Ctrl + C samtidigt for at afbryde softwaren; dette vil give dig mulighed for at se:
Uhåndteret undtagelse i tråd startet af Traceback (seneste kald sidst): Fil "flowlib/lib/time_ex.py", linje 56, i timeCb KeyboardInterrupt: Uhåndteret undtagelse i tråd startet af Traceback (seneste kald sidst): Fil "flowlib/m5cloud.py", linje 187, i _daemonTask Fil "flowlib/lib/time_ex.py", linje 56, i timeCb KeyboardInterrupt: Traceback (seneste kald sidst): Fil "flow.py", linje 43, i Filen "flowlib/m5cloud.py", linje 224, i run-filen "flowlib/m5cloud.py", linje 199, i _backend-filen "flowlib/m5cloud.py", linje 187, i _daemonTask-filen "flowlib/lib/time_ex.py", linje 56, i timeCb KeyboardInterrupt:
Endelig vil MicroPython-grænsefladen være:
MicroPython v1.10-273-g4616ff72f-dirty den 10-06-2019; ESP32-modul med ESP32. Skriv "help()" for mere information. >>> Velkommen til MicroPython på ESP32! For generiske onlinedokumenter, besøg venligst http://docs.micropython.org/. For adgang til hardwaren skal du bruge 'machine'-modulet: import machine pin12 = machine.Pin(12, machine.Pin.OUT) value(1) pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP) print(pin13.value()) i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22)) scan() writeto(addr, b'1234') readfrom(addr, 4) Grundlæggende WiFi-konfiguration: import network sta_if = network.WLAN(network.STA_IF); sta_if.active(True) scan() # Scan efter tilgængelige adgangspunkter connect(" ", " ") # Opret forbindelse til et AP isconnected() # Tjek for vellykket forbindelse Kontrolkommandoer: CTRL-A – på en tom linje, skift til rå REPL-tilstand CTRL-B – på en tom linje, skift til normal REPL-tilstand CTRL-C – afbryd et kørende program CTRL-D – på en tom linje, foretag en soft reset af boardet CTRL-E – på en tom linje, skift til indsætningstilstand For yderligere hjælp til et specifikt objekt, skriv help(obj) For en liste over tilgængelige moduler, skriv help('modules') >>>
Programmering med Scratch
Scratch har som programmeringsmiljø den fordel, at det er enkelt for brugerne at udføre robotprojekter. og elektronik uden avanceret kendskab til programmeringssprog. Til dette bruger man blokke, der er sammensat i henhold til de funktioner og egenskaber, som brugeren har brug for.
Hvis du vil programmere et Arduino-board med Scratch, skal du følge disse trin:
- Det første du skal gøre er at downloade Scratch IDEFor at gøre dette skal du tilgå siden ved hjælp af din foretrukne browser.
https://mblock.makeblock.com/en-us/Vent et par sekunder på, at platformen registrerer din computers operativsystem, og klik derefter på knappen. downloade. - Når Når du åbner dette program, vil du finde skærmen opdelt i tre sektioner.Den midterste er der, hvor du ser alle funktionerne, og den til højre er det miljø, hvor du skal skrive blokkoderne.
- Nu Du skal tilslutte boardet til din computer.
- Indtast værktøjet Placa og vælg din model Arduino.
- gå til menuen Udvidelser Vælge Arduino og også Kommunikation.
- Gå derefter til fanen connect og check ind Serie Port at programmet har genkendt Arduino-forbindelsen. Du kan kontrollere dette ved at skrive navnet på den port, som du har tilsluttet printkortet til.
- Når du har gennemført disse trin, finder du navnet på nummerpladen i den midterste kolonne med en grøn knapDet betyder, at alle forbindelser er lavet korrekt.
- Gå til menuen midt på skærmen, og vælg fanen Programmer.
- Der vil dukke en menu op, hvorfra du skal vælge Robotter (Hvis du laver et projekt af denne art, kan du også vælge andre), for at begynde programmeringen, skal du vælge indstillingen Arduino-program.
- Klik derefter på fanen kontrol.
- Vælg kommandoblokken som du vil have robotten til at gøre.
- Tilbage til robotværktøjet og tryk på den næste handling, som pladen vil udføre.
- Når du er færdig, skal du vælge igen. Styr og vælg en ny funktionDette gentages, indtil du er færdig med programmeringen.
De bedste gratis onlinekurser til at lære at programmere Arduino fra bunden, som du bør kende til
Hvis du er villig til det For at komme videre i Arduino-programmeringens verden er det vigtigt at kende til de bedste onlinekurser. Disse platforme er gratis og vil hjælpe dig med at lære alle de variationer, der tilbydes af det elektroniske tavle, fra bunden.
Tjek:
Arduino i Internet Paso a Paso
Vi kunne ikke starte denne liste uden at anbefale vores eget gratis kursus for at lære at programmere Arduino. Vi tilbyder en bred vifte af emner strategisk adskilt for at gøre læringen meget hurtigere. Og bedre, uanset brugerens computeroplevelse.
For at kunne bruge guiderne og vejledningerne til de forskellige Arduino-boards, programmeringsmiljøet og robotprojekter for voksne og børn, skal du logge ind på Arduino kursus IPAP og vælg det tema, du bedst kan lide. Desuden, Du kan stille os alle typer spørgsmål i afsnittet om Comentarios.
Arduino Project Hub
Dette er den officielle Arduino-hjemmeside Her finder du en bred vifte af projekter og idéer til at bygge elektroniske enheder med printkort, materialer og programmeringskode. Disse projekter De uploades af brugerne selv, så fællesskabet udgør en strategisk del af denne hjemmesideDu skal besøge siden ved hjælp af din browser https://create.arduino.cc/projecthub at lære om de forskellige idéer, der kan bruges i henhold til dine computerfærdigheder.
Ikkaro.com
Det er en platform dedikeret til hjemmeeksperimenter....ikke kun robotteknologi, men også en bred vifte af andre emner. Derfor er Arduino-boardet en vigtig del af projektet. Hvis du vil lære mere og downloade vejledningerne, skal du besøge hjemmesiden og udforske dens indhold.























