Kontroll LED ved bruk av Arduino og Processing GUI

Kontroll LED ved bruk av Arduino og Processing GUI
Arduino er en open source mikrokontrollerplattform som gir mulighet for flere kontrollerende måter for sensorer og enheter. Ved å bruke Arduino med prosessering kan vi lage interaktive prosjekter med grafiske brukergrensesnitt (GUIS). Her vil vi designe en GUI for tre forskjellige lysdyrkontrollsystemer.

Denne artikkelen oppsummerer følgende punkter:

1: Introduksjon til Arduino GUI

2: Designe Arduino GUI for LED -kontroll

  • 2.1: Last ned behandling
  • 2.2: Installere Controlp5 -biblioteket i behandlingen
  • 2.3: Skjematisk

3: Behandlingskode for GUI

4: Arduino IDE -kode for GUI

5: Output

Konklusjon

1: Introduksjon til Arduino GUI

Arduino GUI, eller grafisk brukergrensesnitt, er en plattform som lar brukere enkelt samhandle med den fysiske verden gjennom bruk av sensorer og andre elektroniske komponenter. Ved hjelp av GUI kan brukere lage tilpassede grafiske grensesnitt for å kontrollere enhetene sine, overvåke sensordata og visualisere resultater i sanntid.

Å ha et Arduino -prosjekt med GUI hjelper brukere å ha forskjellige nivåer av teknisk ekspertise for å kontrollere og overvåke prosjektet sitt. Det er flere plattformer som designer Arduino GUI og en av disse er Behandling. Ved å bruke dette kan vi installere biblioteker og lage en tilpasset GUI for prosjektet vårt.

2: Designe Arduino GUI for LED -kontroll

Utformingen av et grafisk brukergrensesnitt (GUI) for et Arduino -system kan oppnås ved hjelp av prosesseringsprogrammeringsspråket. Denne kombinasjonen gir et brukervennlig grensesnitt for å samhandle med den fysiske verden via mikrokontrolleren.

Behandling Tilbyr et enkelt miljø for å lage grafiske elementer og animasjoner, mens Arduino gir maskinvareinteraksjon og kontroll.

For å designe Arduino -basert GUI for LED -kontroll vil vi bruke prosesseringsprogramvaren. Ved hjelp av behandlingen vil vi designe GUI og koble den til Arduino -kode ved hjelp av seriell Arduino -kommunikasjon.

Første trinn er å laste ned behandlingen og installere den i systemet.

2.1: Last ned behandling

Gå til den offisielle nettstedet og last ned det.

Trinn 1: Last ned behandlingen i henhold til operativsystemet ditt:

Steg 2: Etter å ha lastet ned den, trekker du ut filen:

Trinn 3: Når zip -filen er trukket ut, kjør exe Behandling Installasjonsprogram. Etter vellykket installasjon, åpne den ved hjelp av startknappen eller gjennom en snarvei:

2.2: Installere Controlp5 -biblioteket i behandlingen

Controlp5 er et bibliotek for prosesseringsprogrammeringsmiljøet og for Arduino som gir GUI -kontroller for interaktive programmer. Det gir et sett med GUI -widgets (e.G -knapper, glidebrytere, knotter) og verktøy for å lage grafiske brukergrensesnitt for prosessering og Arduino -prosjekter.

Før vi kontrollerer Arduino, må vi installere den i prosesseringsprogramvare.

Trinn 1: Åpne behandling og gå til: Skisse> Importer bibliotek> Administrer bibliotek:

Steg 2: Søk etter Controlp5 Bibliotek og klikk Install:

Etter vellykket installasjon av ControlP5 -biblioteket kan vi enkelt programmere Arduino med behandling og lage en interaktiv GUI for forskjellige prosjekter.

2.3: Skjematisk

Vi skal designe en prosessering GUI for Arduino LED -kontrollprogrammet. Koble tre lysdioder ved pinne D10,11 og 12. Her bruker vi Arduino Nano -styret. Du kan gå med noen av Arduino -tavlene:

3: Behandlingskode for GUI

Følgende er behandlingskoden for Arduino GUI. Denne koden hjelper til med å kontrollere tre forskjellige lysdioder ved hjelp av et enkelt grafisk grensesnitt.

Importer kontrollp5.*; /*Inkluder Controlp5 -bibliotek*/
Importbehandling.serie.*; /*import seriell kommunikasjon*/
Seriell port;
Controlp5 CP5; // Opprett Controlp5 -objekt
Pfont font;
int col1 = farge (255); /*Farge for knapp 1*/
int col2 = farge (255); /*Farge for knapp 2*/
int col3 = farge (255); /*Farge for knapp 3*/
int col4 = farge (255); /*Farge for knapp 4*/
boolsk toggevalue = falsk; /*Veksleverdien initialiseres*/
void setup ()
størrelse (500, 500); /*Vindubredde og høyde er definert*/
Font = CreateFont ("Calibri Light Bold", 20); /*Font definert for knapp og tittle*/
PrintArray (seriell.liste()); /*Skriver ut tilgjengelige serielle porter*/
port = ny serie (dette, "com8", 9600); /*Com port for Arduino Du kan sjekke den ved hjelp av Arduino IDE*/
/*Opprett nå en ny knapp*/
glatt();
CP5 = ny Controlp5 (dette);
CP5.AddToggle ("Toggle") /*Veksle -knappen for LED 1* /
.setPosition (180, 60) /*x og y koordinater av LED1 Toggle -knapp* /
.SetSize (100, 40) /*Veksle knappstørrelse horisontalt og vertikalt* /
.setValue (true) /*veksle -knapp startverdi satt til sann* /
.setMode (controlp5.Bryter) /*Bruke ControlP5 -biblioteket Angi vekslingen som bryter* /
;
/*Tilsvarende designet de resterende tre knappene*/
CP5.AddToggle ("Toggle2")
.setposisjon (180, 160)
.SetSize (100, 40)
.setValue (sant)
.setMode (controlp5.BYTTE OM)
;
CP5.AddToggle ("Toggle3")
.setPosition (180, 260)
.SetSize (100, 40)
.setValue (sant)
.setMode (controlp5.BYTTE OM)
;
CP5.AddToggle ("Toggle4")
.setposisjon (180, 360)
.SetSize (100, 40)
.setValue (sant)
.setMode (controlp5.BYTTE OM)
;

void Draw ()
/*Funksjon for å tegne og skrive tekst*/
bakgrunn (0, 0, 0); /*Bakgrunnsfarge på vinduet (R, G, B) eller (0 til 255)*/
Fyll (255, 255, 255); /*tekstfarge (r, g, b)*/
TextFont (font);
tekst ("LED -kontroll GUI", 155, 30); /*("tekst", x koordinat, y koordinat)*/
tekst ("LED1", 20, 90); /*("tekst", x koordinat, y koordinat)*/
tekst ("LED2", 20, 190); /*("tekst", x koordinat, y koordinat)*/
tekst ("LED3", 20, 290); /*("tekst", x koordinat, y koordinat)*/
tekst ("alle lysdioder", 20, 390); /*("tekst", x koordinat, y koordinat)*/
Pushmatrix ();
if (TOGGLEVALUE == true)
Fyll (255.255.220); /*Fargeovergang hvis vippebryteren trykkes*/
annet
Fyll (128,128,110);

oversette (400,80); /*Vekslebryteroversett*/
Fyll (col1); /*Hvis vippebryteren er trykket på Endre ellipsefarge til hvit*/
ellipse (0,0,50,50); /*Ellipse størrelse vertikalt og horisontalt*/
Popmatrix ();
/*Tilsvarende designet resten av tre knapper*/
Pushmatrix ();
if (TOGGLEVALUE == true)
Fyll (255.255.220);
annet
Fyll (128,128,110);

oversette (400,180);
Fyll (col2);
ellipse (0,0,50,50);
Popmatrix ();
Pushmatrix ();
if (TOGGLEVALUE == true)
Fyll (255.255.220);
annet
Fyll (128,128,110);

oversette (400.280);
Fyll (col3);
ellipse (0,0,50,50);
Popmatrix ();
Pushmatrix ();
if (TOGGLEVALUE == true)
Fyll (255.255.220);
annet
Fyll (128,128,110);

oversette (400.380);
Fyll (col4);
ellipse (0,0,50,50);
Popmatrix ();

/*Funksjon for å slå av og på LED*/
void Toggle (Boolean Flag1)
if (Flag1 == FALSE) /*Hvis verdien er sann* /
havn.Skriv en'); /*Seriell A vil bli sendt til Arduino*/
Col1 = farge (255); /*Farge på ellipse endres til full hvit*/
annet
havn.skriv ('x'); /*ellers vil LED 1 forbli av og serielt X sendes til Arduino Ide*/
Col1 = farge (100); /*Lysegrå farge for ellipse når vippet ikke blir presset*/


/*Tilsvarende designet resten av tre knapper*/
void Toggle2 (Boolean Flag2)
if (flagg2 == falsk)
havn.skriv ('B');
col2 = farge (255);
annet
havn.skriv ('y');
col2 = farge (100);


void Toggle3 (Boolean Flag3)
if (Flag3 == FALSE)
havn.skriv ('C');
Col3 = farge (255);
annet
havn.skriv ('z');
col3 = farge (100);


void Toggle4 (Boolean Flag4)
if (flagg4 == falsk)
havn.skriv ('o');
Col4 = farge (255);
annet
havn.skriv ('f');
col4 = farge (100);

Ovennevnte kode startet med å inkludere ControlP5 -biblioteket sammen med en seriell kommunikasjonsfil. Neste definerte vi 4 forskjellige variabler som vil lagre fargene for forskjellige knappetilstander.

I oppsettdelen er GUI -vindusstørrelsen definert. Neste en COM -port er definert for seriell kommunikasjon med Arduino -styret. Du kan sjekke COM -porten ved hjelp av Arduino IDE.

Deretter definerte vi fire forskjellige knapper: deres størrelse og posisjon. Alle disse fire knappene 'startverdi er satt til True. De tre første knappene vil kontrollere en LED individuelt mens den fjerde knappen vil veksle alle tre lysdioder samtidig.

Neste i tomromsfunksjonen designet vi Ellipse -indikatoren for fire knapper. Når hver av vippeknappene blir trykket på ellipse, vil fargen skifte til full lysstyrke som viser oss at LED er slått på.

Ved hjelp av PushMatrix () og Popmatrix () -funksjonen initialiserte vi en IF -tilstand for hver av vippebryterne. Når noen av vippeknappene trykkes, vil den oversette og ellipsen vil endre fargen til 255.

I begynnelsen av programmet definerte vi en egen fargestilstand for hver av ellipene som tilsvarer en spesifikk knapp.

Og til slutt er en tomromsfunksjon for hver av vippeknappene definert. Denne funksjonen vil serielt sende et spesifikt tegn til Arduino -styret når en vekslingsbryter trykkes.

For eksempel, hvis Toggle2 -verdien er falsk, et tegn b vil bli overført serielt til Arduino. Som vil slå på LED på pinne D11. Tilsvarende, hvis Toggle2 -verdien er sann en karakter y vil bli overført serielt som vil gjøre LED ved pinne D11 til AV.

Følgende tabeller gir oss en ide om hvordan disse serielle karakterene fungerer:

Seriell karakter Utgangsrespons
en Slå på LED på pinne D10
b Slå på LED på pinne D11
c Slå på LED på pinne D12
x Slå av LED på pinne D10
y Slå av LED på pinne D11
z Slå av LED på pinne D12

Merk: Vi kan tilpasse disse tegnene til alle andre, men sørg for å bruke de samme tegnene i både Arduino og prosesseringskode.

4: Arduino IDE -kode for GUI

Følgende er Arduino -koden skrevet i Arduino IDE:

void setup ()
pinmode (10, utgang); /*PIN for LED1*/
pinmode (11, utgang); /*PIN for LED2*/
pinmode (12, utgang); /*PIN for LED3*/
Serie.Begynn (9600); /*Seriell baud rate*/

void loop ()
hvis (seriell.Tilgjengelig ()) /*Kontroller for tilgjengelighet av serielle data fra behandlingen* /
char val = seriell.lese(); /*Hvis seriedata er tilgjengelig, lagrer det i en variabel*/
if (val == 'a') /*hvis en mottatt* /
digitalwrite (10, høy); /*slå på LED1*/

if (val == 'b') /*hvis b mottatt* /
digitalwrite (11, høy); /*slå på LED2*/

if (val == 'c') /*hvis C mottatt* /
digitalwrite (12, høy); /*slå på LED3*/

if (val == 'x') /*hvis x mottatt* /
digitalwrite (10, lav); /*slå av LED1*/

if (val == 'y') /*hvis y mottatt* /
digitalwrite (11, lav); /*slå av LED2*/

if (val == 'z') /*hvis z mottatt* /
digitalwrite (12, lav); /*slå av LED3*/

if (val == 'o') /*hvis o mottatt* /
digitalwrite (10, høy);
digitalwrite (11, høy); /*slå på alle lysdioder*/
digitalwrite (12, høy);

if (val == 'f') /*hvis f mottatt* /
digitalwrite (10, lav);
digitalwrite (11, lav); /*slå av alle lysdioder*/
digitalwrite (12, lav);


Denne koden startet med å definere pinnen for tre lysdioder. Hver av disse pinnene er definert som utgang ved bruk av pinmode () -funksjonen. Neste Arduino -kode vil kontinuerlig se etter seriedataene. Hvis seriedataene er tilgjengelige, vil den generere et svar i henhold til det.

For eksempel hvis behandling GUI -vekslebryter 1 blir trykket på et tegn "en" vil bli mottatt av Arduino, og det vil slå på LED på pinne D10. Tilsvarende hvis karakteren “X” mottas serielt den vil slå av LED på pinne D10:

5: Output

Etter å ha lastet opp kode til Arduino -styret, kjører du behandlingskoden og sørg for at Arduino -styret er serielt tilkoblet med PC -en.

Følgende vindu åpner og viser oss at GUI er designet for tre lysdioder. Ved å bruke denne GUI kan vi kontrollere noen av lysdiodene ved å ta prøver på bryteren:

Vi kan kontrollere LED Glow ved hjelp av denne GUI:

Konklusjon

Bruken av Controlp5 Bibliotek i kombinasjon med prosessering og Arduino tilbyr en kraftig løsning for å lage GUI-baserte prosjekter. Biblioteket gir et omfattende sett med verktøy og widgeter som forenkler prosessen med å lage brukervennlige grafiske grensesnitt, slik at utviklere kan fokusere på prosjektets kjernefunksjonalitet.