Stap 3: De Code
Ik echt nodig dank bwrussell voor zijn hulp met dit project. Ik vroeg hem meerdere codering vragen en hij antwoordde ze allemaal in groot detail zodat ik ze kon begrijpen. Hij weet veel meer over Arduino en codering dan ik, en ik zou niet in staat om het te doen zonder hem was geweest. Hij is een fantastische bron en gewoon een leuke collega Instructable-maker.
Hier is de code die ik gebruikt...
/ * Deze code is voor mijn Arduino/Bluetooth/Android-controller. Een Android applicatie stuurt een specifieke 'byte' van gegevens Algoritme: 4 pins worden gedeclareerd, pinA - pinD. Dit zijn de pinnen 4-7 op de Arduino. Opdracht is de byte van de gegevens die de code
Deze code, de schakelaar... case-statement ontvangt de 'byte' en draait pinnen in- of uitschakelen, afhankelijk van wat het ontvangt.
ontvangt. rHigh en rLow worden gebruikt voor de minimale en maximale willekeurige vertragingswaarden. De setup ingesteld pinA - pinD als uitgangen
en zet alles zo uit. Het begint dan de seriële overdracht, als een byte is ontvangen, het is ingesteld als opdracht. In de lus
1-4 gevallen gewoon uitschakelen pinA - pinD. Geval 5 stelt alle pinnen als willekeurige. Zaak 6 ingeschakeld alle pinnen. Geval 7 beurten
alle pinnen af. Zaak 8 begint een knipperende patroon. */
Const int pinA = 4;
Const int pinB = 5;
Const int pinC = 6;
Const int pinD = 7;
byte opdracht = 0;
Const int rHigh = 555;
Const int rLow = 100;
int randomPin;
VOID pinDo (int pin);
nietig allOn();
nietig allOff();
nietig randomStart();
nietig flashThrough();
VOID Setup
{
pinMode (pinA, OUTPUT); het Relais-pincode instellen als uitgang
pinMode (pinB, OUTPUT); //
pinMode (pinC, OUTPUT); //
pinMode (pinD, OUTPUT); //
allOff(); Controleer of dat alle pinnen zijn weg naar de start
Serial.begin(9600);
Als (Serial.available() > 0) / / seriële overdracht Start
{
opdracht = Serial.read(); Opdracht set om gelijk de seriële data
}
}
void loop
{
Als (Serial.available() > 0)
{
opdracht = Serial.read();
schakelaar (opdracht)
{
geval 1: / / Relay 1
pinDo (pinA);
breken;
geval 2: / / Relay 2
pinDo (pinB);
breken;
Case 3: / / Relay 3
pinDo (pinC);
breken;
geval 4: / / Relay 4
pinDo (pinD);
breken;
geval 5: / / de random-functie
randomStart();
breken;
kast 6: / / alle pinnen inschakelen
allOn();
breken;
geval 7: / / alle pinnen uitzetten
allOff();
breken;
geval 8: / / Start knipperende patroon
terwijl (opdracht! = 6 & & commando! = 7)
{
flashOn();
opdracht = Serial.read(); Controleren op nieuwe seriële data
}
}
}
}
VOID pinDo(int pin)
{
Als (digitalRead(pin) == laag)
{
digitalWrite (pin, hoge);
}
anders
{
digitalWrite (pin, laag);
}
}
VOID randomStart)
{
terwijl (opdracht! = 6 & & commando! = 7)
{
randomPin = willekeurige (pinA, pinD + 1);
Als (digitalRead(randomPin) == laag)
{
digitalWrite (randomPin, hoge);
vertraging (willekeurige (rLow, rHigh));
}
anders
{
digitalWrite (randomPin, laag);
vertraging (willekeurige (rLow, rHigh));
opdracht = Serial.read(); Controleren op nieuwe seriële data, als dat zo is, sluit het willekeurig knipperen
/ * Deze 2 als verklaringen in het 5e geval aanwezig zijn, omdat ik de pinnen onmiddellijk wilde
uitschakelen afhankelijk van de opdracht die zij ontvangt terwijl in het willekeurige gedeelte van code.* /
Als (opdracht == 6)
{
allOn();
}
Als (opdracht == 7)
{
allOff();
}
}
}
}
VOID flashOn)
{
digitalWrite (pinA, hoge); alle op
delay(150);
digitalWrite (pinB, hoge);
delay(150);
digitalWrite (pinC, hoge);
delay(150);
digitalWrite (pinD, hoge);
delay(400);
allOff();
allOn();
allOff();
allOn();
allOff();
flashThrough();
flashThrough();
flashBack();
flashBack();
}
VOID allOn)
{
digitalWrite (pinA, hoge);
digitalWrite (pinB, hoge);
digitalWrite (pinC, hoge);
digitalWrite (pinD, hoge);
delay(300);
}
VOID allOff)
{
digitalWrite (pinA, laag); volgende fase
digitalWrite (pinB, laag);
digitalWrite (pinC, laag);
digitalWrite (pinD, laag);
delay(350);
}
VOID flashThrough)
{
digitalWrite (pinA, hoge); volgende fase
delay(200);
digitalWrite (pinA, laag);
digitalWrite (pinB, hoge);
delay(200);
digitalWrite (pinB, laag);
digitalWrite (pinC, hoge);
delay(200);
digitalWrite (pinC, laag);
digitalWrite (pinD, hoge);
delay(200);
digitalWrite (pinD, laag);
}
VOID flashBack)
{
digitalWrite (pinD, hoge); volgende fase
delay(200);
digitalWrite (pinD, laag);
digitalWrite (pinC, hoge);
delay(200);
digitalWrite (pinC, laag);
digitalWrite (pinB, hoge);
delay(200);
digitalWrite (pinB, laag);
digitalWrite (pinA, hoge);
delay(200);
digitalWrite (pinA, laag);
}