Använder en RGB LED att upptäcka färger (4 / 6 steg)

Steg 4: Kod Arduino

Öppna upp Arduino miljön och skapa en ny skiss genom att klicka på Arkiv - ny. För de som inte vill följa med, har jag inkluderat koden som en textfil. Kopiera/klistra in det i en ny skiss på Arduino och du är bra att gå.

Deklarationer

I början av en skiss är där vi gör våra deklarationer, så skriv följande kod i fönstret miljö.

/ / Definiera färg sensor LED stift
int ledArray [] = {2,3,4}.

Booleskt värde att veta om balansen har ställts in
booleska balanceSet = false;

platshållare för färg upptäcks
int rött = 0;
int grön = 0;
int blå = 0;

flöten att hålla färg matriser
flyta colourArray [] = {0,0,0}.
flyta whiteArray [] = {0,0,0}.
flyta blackArray [] = {0,0,0}.

för genomsnitt
int avgRead;
' / /' är reserverade för betecknas kommentarer, därför inte behöver du texten på rader som börjar med "/ /" för skissen att arbeta.

Resten av det är några namn som vi ger till några platshållare och deklarationer för vilken typ av data de innehåller.

Som ni ser, börjar vi genom att inrätta en matris att hålla pin-koder. Dessa motsvarar de stift som olika färg lysdioder är anslutna till på Arduino.

Nästa tillkännager vi ett booleskt värde att kontrollera huruvida balansera har utförts. Ett booleskt värde är något som returnerar sant eller falskt.

Vi går att skapa några platshållare för färgvärdena och vissa matriser för hålla Skanna data och balansera den upptäckta färgen.

Även om vi inte är färdiga ännu, gå vidare och spara din skiss. Ge det ett namn som är meningsfulla för dig, något som coloursensor.pde kanske.

Setup

Nästa steg i att skapa en Arduino skiss är att skriva setup-funktionen. Installationsprogrammet körs när Arduino först startar upp, så det är där vi berättar Arduino vad hur vi vill använda stiften och ställa andra funktioner som vi kan behöva som seriell kommunikation.

Skriv följande nedan koden som du just angett. void setup() {

Konfigurera utgångarna för färg sensorn
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);

börja seriell kommunikation
Serial.BEGIN(9600);

} Inte mycket till detta avsnitt. Här säger vi bara till Arduino att vi tänker på att använda stift 2,3 och 4 som resultat. Detta är nödvändigt om vi vill tända våra lysdioder... och vi gör, om så bara helt kort.

Nästa del är att berätta Arduino som vi avser att använda den seriella porten, och att det bör vara öppen och redo att kommunicera på baud anges (inom parentes).

Loop

Loop funktion är normalt där magiskt händer i en Arduino. Det är den kod som körs om och om igen när Arduino startas och installationen har gått igenom. Sätta den nästa bit kod under din setup-funktionen.
void loop() {

checkBalance();
checkColour();
printColour();
}
Okej vid första anblicken ser ut som det verkligen inte finns mycket där. Men dessa är varje samtal till privata tillställningar. För vissa projekt hitta jag denna typ av strategi fungerar väl. Det gör det lättare att läsa (tror jag) som varje kodblock är separerade med ett meningsfullt namn, och vi kan se vad skissen ska göra en överblick.

Först det kommer att kontrollera balansen, sedan det kommer att kontrollera färgen, och sedan skriver ut färgen till den seriella porten så vi kan se de värden som det läsa.

Låt oss utforska den första privata funktionen, checkBalance, och lägga till den i vår kod. Skriv följande nedan din loop funktion. void checkBalance() {
Kontrollera om balansen har varit anges, om inte, ange den
IF(balanceSet == false) {
setBalance();
}
}
Som du kan se, om den balanceSet (booleskt värde) har värdet FALSKT, då det gör ett anrop till en sekundär funktion kallas setBalance, där vi satt i vitt och svart balansera avläsningar. Detta sker endast när du startar upp arduino en gång. void setBalance() {
ställa in vitbalans
Delay(5000); dröjsmål i fem sekunder, detta ger oss tid för att få en vit urval framför sensor
Skanna den vita provet.
gå igenom varje ljus, få en behandling, som basen läsning för varje färg röd, grön och blå till den vita matrisen
för (int jag = 0; jag < = 2; i ++) {
digitalWrite(ledArray[i],HIGH);
Delay(100);
getReading(5); tal är tal av skanningar att ta för genomsnittet, hela funktionen är överflödiga, en läsning fungerar lika bra.
whiteArray [i] = avgRead;
digitalWrite(ledArray[i],LOW);
Delay(100);
}
gjort scanning vit, kommer nu det puls blå att berätta att det är dags för det svarta (eller grå) provet.
ställa in svart balans
Delay(5000); vänta i fem sekunder så vi kan placera vår svart prov
Varsågod och skanna, sätter färgvärdena för rött, grönt och blått när den utsätts för svart
för (int jag = 0; jag < = 2; i ++) {
digitalWrite(ledArray[i],HIGH);
Delay(100);
getReading(5);
blackArray [i] = avgRead;
blackArray [i] = analogRead(2);
digitalWrite(ledArray[i],LOW);
Delay(100);
}
ställa in booleskt värde så vi vet att balans är inställd
balanceSet = sant;
Delay(5000); fördröja en annan 5 sekunder för att låta oss ikapp
}
Om du märkt, vi gjorde ännu ett anrop till en funktion getReading. Vi kommer att lägga till denna rätt efter att vi lagt i funktionen checkColour.

När våra motkontots nummer har ställts in, går vi att äntligen läsa färg. Funktionen är i princip samma som setBalance,, med tillägg av matematik som balanserar behandlingen. Låt oss lägga det nu. void checkColour() {
för (int jag = 0; jag < = 2; i ++) {
digitalWrite(ledArray[i],HIGH); tur eller LED, rött, grönt eller blått beroende vilken iteration
Delay(100); fördröja så att CD-skivor till stabalize, de är långsamma
getReading(5); ta en behandling men många gånger

colourArray [i] = avgRead; Ange den aktuella färgen i matrisen genomsnitt läsning
flyta greyDiff = whiteArray [i] - blackArray [i]; den högsta möjliga avkastningen minus lägsta returnerar området för värden mellan
colourArray [i] = (colourArray [i] - blackArray [i]) / (greyDiff) * 255; den behandlingen återvände minus lägsta värdet dividerat med den möjliga utbud multiplicerat med 255 kommer att ge oss ett värde ungefär mellan 0-255 som representerar värdet för den aktuella reflektionsförmåga (för färgen den utsätts för) av vad är det som skannas
digitalWrite(ledArray[i],LOW); Stäng av den nuvarande LED
Delay(100);
}

} Vi måste också lägga till vår funktion getReading, annars kommer inte vår skiss har verkliga värden. Denna funktion tillåter bara oss att ta några avläsningar och genomsnittlig dem. Detta ger en något mjukare läsning. void getReading (int gånger) {
int läsning;
int tally = 0;
ta behandlingen men många gånger begärdes och lägga upp dem
för (int jag = 0; jag < gånger; i ++) {
läsning = analogRead(0);
Tally = behandlingen + tally;
Delay(10);
}
beräkna medelvärdet och ange det
avgRead = (stämmer) / times;
}
Nu har vi en färg läsa i vår färg anläggning array, allt vi behöver göra nu är mata den till skärmen. Kom ihåg att vi setup seriell kommunikation tillbaka i setup-funktionen, allt vi behöver göra nu är använder den seriella porten för att skicka ut våra data. Arduino-miljö innehåller en seriell monitor, vilket gör att du kan se data som den skickas från Arduino. Så låt oss lägga till den sista funktionen på skissen. //prints färg i matrisen färg, i nästa steg, vi skickar detta till behandling för att se hur bra sensorn fungerar.
void printColour() {
Serial.Print ("R =");
Serial.println(int(colourArray[0]));
Serial.Print ("G =");
Serial.println(int(colourArray[1]));
Serial.Print ("B =");
Serial.println(int(colourArray[2]));
Delay(2000);
}
Detta kommer att skriva ut vissa data som ser ut ungefär så här R = 231
G = 71
B = 0 vilket skulle vara equivilent till en röd-orange färg. Jag har lämnat denna skiss superenkel. Du kan klä den som du tycker passar. Tanken är att visa hur man gör och använder sensorn, kreativt genomförande är upp till dig.

Nu kan du spara filen igen och ladda upp den till Arduino. Din Arduino bör börja köra skissen, lilla lamporna bör flimmer.

Skissen är mycket grundläggande. Jag har erbjudit det som en byggsten och att visa dig hur du använder sensorn.

Se Steg
Relaterade Ämnen

Hur du använder en RGB LED

använder en RGB LED du kan bläddra genom alla färger. Bra att göra, humör lampa, uttrycksfulla robot eller häftiga ljuseffekter.Men för att helt enkelt ange färg (nyans) kan vara lite knepigt eftersom du behöver konvertera som till enskilda intensite...

Hur du använder en RGB LED - Arduino handledning

En RGB LED har 4 PIN-koder, en för varje färg (röd, grön, blå) och en gemensam katod. Den har träd olika färg-lysdioder som kan kombineras för att skapa alla typer av färg! Vilken färg är möjligt beroende på hur ljus varje diod är.Titta på följande v...

Intellekten Edison Gas sensorsystem att upptäcka Biogas / gasol läckage

Jag är en av de 300 + som fått Intel Edison styrelsen och specialitet Intel sakernas Utvecklingskit som erbjuds av instructables under temat miljö & jordbruk. En av de förslag som lagts fram av mig var ett Biogas läckage upptäckt system med Intel Edi...

Att skapa Bookhuddle.com, en webbplats för att upptäcka, organisera och dela bokinformation

detta inlägg beskriver de olika stegen i att skapa och lanserar Bookhuddle.com, en webbplats syftar till att hjälpa läsarna att upptäcka, organisera och dela informationen.Steg som beskrivs här gäller utvecklingen av andra webbplatser.Steg 1: Komma m...

BloodBowl vända Counter använder 7-segment LED

detta projekt var för en BloodBowl spelet slå disken med sex Charlieplexed 7-segment led.Steg 1: koncept En vän till mig bad mig om idéer för att bygga Bloodbowl tur counter för hans brädspel. Visste inte vad det var och vad han ville ha, det tog en...

DIY blacksmithing - konvertera din Grill i en smedja sedan använder den för att återvinna metallskrot i verktyg

Smidesvisningar på grillen? -Ja, den här verkligen arbeten!Här är hur du kan göra den kvalitet stål som finns i cykeldelar live på, genom att utforma det in bladen för att skapa användbara verktyg. Bästa är dock att detta kan göras på en vanlig Grill...

CD-RW-skivor att upptäcka nya saker!

Detta instructable kommer som en lösning och något medelväg mellan massor av variabler.-Jag kör runt för arbete, och jag är trött på att lyssna på samma låtar och tråkig godartad prat av vissa pratshower.-Jag vill verkligen bygga en i bil dator som d...

Hur man använder Photoshop för att skapa texturer med Alpha kanaler för Second Life

detta vägleder dig steg för steg om hur man gör texturer med öppenhet för Second Life använder Adobe Photoshop CS. Den innehåller tips om hur man undviker suddiga vita konturer och lite info om masker och alfakanaler.Steg 1: översikt Att göra texture...

Med en ACS712 och Arduino för att upptäcka manöverdonet gränser

Jag arbetar med ett projekt som använder en 400 lb kraft, 30" kasta ställdon som har inbyggd, oflyttbara Gränslägesbrytare men ger inte positionering feedback. De flesta av (prisvärda) stora manöverdonen hittade jag inte ge feedback och har bara två...

Camping/utanför larmsystem för att upptäcka odjuret och människor

Nu är sommar, många människor kommer njuta av djurliv medan camping i naturen. Om du någonsin sovit i naturen i ett tält som du vet hur formidabla är att höra ljudet av alla djur i mörkret, (exempel en Björn). Det finns några metoder att fly från en...

Hur du använder spaghetti för att måla som Jackson Pollock

målning med spaghetti är ett ganska häftigt kid verksamhet av många skäl:Det fungerar de ack så viktiga finmotorikDu kan konfigurera den för att undervisa blandning primära färger för att göra sekundära färgerExtension aktivitet för Vermicomposting p...

Göra Linux-System att upptäcka av fjärranslutna Bluetooth-enheter

IntroduktionDetta instructable är baserat på min erfarenhet lärande Bluetooth och Linux. Avslutning av denna uppgift krävs en Bluetooth ansökan att överföra foto från Android-enhet till Raspberry Pi med OBEX Push protokollet.Target läsareDetta instru...

Hur du använder en bl.a att Debark en tall logg

Hej hur mår du?Här gör jag det bästa som jag vet om hur man använder en bl.a och även om hur man slipar. Detta är det första steget som jag behöver göra för att förbereda pine loggarna för min pole Lada som jag bygger. Jag hoppas du kan se att detta...

Hur du använder Arduino för att slå på en lampa på distans, direkt från din iPhone/Android

med Arduino du verkligen kan göra så många roliga och användbara projekt, särskilt för att underlätta vissa uppgifter i hemmet. I denna artikel kommer vi att se hur du använder Arduino till avsides vända på en lampa, eller någon enhet som är ansluten...

Hur man använder en mjölkkanna att Linda en dag

min gubbe har påpekat för mig att jag vet hur man använder en hel del olika saker, som vanligtvis bor i vår papperskorgen, för att göra underbara behållare för de gåvor jag skapa för jul, födelsedagar, etc. Jag köpa sällan lådor och bara köpa present...

Använda Sugru för att täcka en ful fästelement

användning kalla in gummi produkt, Sugru, att täcka upp en ful fästelement. I mitt fall var det en skruv som höll upp en provisorisk whiteboard. Jag använde vit Sugru, men vilken färg kan göra.Steg 1: Kontrollera att fästanordningen inte sticker ut f...

Hur man använder kraften på halm att lura små barn

Så vad är Force?Jag är inte en stor stjärna krig fan eller något, men jag vet saker. I Star Wars är kraften vad som ger en Jedi sin makt.I den verkliga världen, "Styrka" är känd som telekinesi, och det ger användarna möjlighet att kontrollera sa...

Hur du använder Iridium för att få henne att säga "Ja!" denna alla hjärtans dag

föreställa sig denna konversation:Vi hade varit ute och går, precis efter solnedgången, och satt på en parkbänk tittar på stjärnorna. Det var en vacker natt. Efter ett tag sa han "Jag undrar om vi får se några stjärnfall ikväll." Sedan, han fråg...

Hur du använder harts för att göra dina egna plast saker

Hej mina vännerFaktiskt jag är en designer som elektronik men sedan barndomen var jag intresse för både elektronik och kemiska och jag vill förklara om en av min coola test i kemiska att använda detta sätt som dina behovsom du vet om du vill beställa...