Live data till excel från en Arduino ljussensor (3 / 7 steg)
Steg 3: Areduino kod
Paralax installationsfilen skapar ett par exempel kalkylblad som egentligen allt du behöver på Excel sida. En gång installerat allt du behöver göra är att öppna exempelfilen och acceptera användningen av makron-då PLX DAQ kontroll öppnas. Ställa upp enligt föregående bilden i steg 1 att se till att du väljer com-porten och inte den jag har använt (om inte din råkade vara COM 3 också)
Arduinoen
Följande är koden jag sydde ihop - tillåter Arduino att läsa potentialskillnaden mellan den
Adruino stift 5 volt och A2. Det potentiella värdet för det första kalibreras med potentiometern.
Kalibreringen görs genom att helt täcka LDR så att dess motstånd sjunker till så nära till ingenting som möjligt (detta gör Lysdioderna förändras mycket snabbt) då du justera POTTEN till cykling lätta förändringen från lysdioderna är synliga.
Ju mer du justera POTTEN den Store kan du ändra tid registrerad på Excel, men vara försiktig med att gå för långt eller visas data i andra änden av skalan (dvs. När du utsätter LDR att tända igen)
Deklarationer - Ställ in variabler som ska användas i ansökan
byte ledPin [] = {4, 5, 6, 7, 8, 9, 10,11,12,13}; Skapa matrisen för LED stift
int potPin = 2; Välj input PIN-koden för potentiometer
int ledDelay; Ange en fördröjning perioden LED förändring
int delayData = 80. Ställa in en fördröjning period för data som överförs till Excel och försöker minska datavolymer
int riktning = 1;
int currentLED = 0;
int x = 0; Ange inledande för LED utgång
int rad = 0; Ange raden börjar Excel
osignerade långa changeTime;
//---------------------------------------------------------------------------------------------------------
Ställa in den Arduino Serial port hastigheten, rensa alla tidigare uppgifter och skicka rubrikerna för data till excel
void setup() {
Serial.BEGIN(128000); öppnar serieport, uppsättningar data rate128000 bps
Serial.println("CLEARDATA"); rensar alla återstående data
Serial.println ("etikett, tid, Pin, lätt nivå");
Återställa alla pints för ljusdioderna till digital utgång
för (int x = 0; x < 10; x ++) {
pinMode (ledPin [x], produktionen); }
changeTime = millis();
}
void loop() {
ledDelay = analogRead(potPin); läsa värdet från potten
om ((millis()-changeTime) > ledDelay) {/ / om det har varit ledDelay ms sedan senaste ändringen
changeLED();
changeTime = millis();
}
}
void changeLED() {
för (int x = 0; x < 10; x ++) {/ / stänga av alla lysdioder
digitalWrite (ledPin [x], låg);
}
digitalWrite (ledPin [currentLED], hög); slå på den nuvarande LED
currentLED += riktning; ökas med värdet riktning
ändra riktning om vi når slutet
om (currentLED == 9) {riktning = -1;}
om (currentLED == 0) {riktning = 1;}
Skicka data till excel och fördröja nästa steg för den angivna tidsperioden
Serial.Print("data,Time,"); Serial.Print(currentLED); Serial.Print(","); Serial.println(ledDelay);
rad ++;
x ++;
fördröjning (delayData);
}