Stap 7: Software, deel 2: Pi verzenden van gegevens naar de Arduino (knippert een LED)
Arduino Hoe veel tijd om te knipperen van een LED. We gebruiken de Arduino is aan boord
LED op D13 voor eenvoud, maar het is zeker mogelijk om te veranderen de
LedPin variabele in de schets, en haak omhoog een buitenboord LED-plus-weerstand
tussen de juiste digitale pin en de grond.
De "driver" is een kort shellscript. Dat klopt, een nederige Bash script.
In feite, is het zelfs mogelijk om het te doen vanaf de opdrachtregel in
de console of in een xterm: echo 3 >/dev/ttyAMA0 voor drie knippert, voor
in het volgende voorbeeld, of echo 7 >/dev/ttyAMA0 voor zeven knippert. Geen Python programmeren
en geen bibliotheken te installeren! Nou, ik niet veel zorg voor pythons of vervelende
soorten slangen die rondom doorloopt en de verbrijzeling u. Als ik in één draaien,
Ben ik aansprakelijk voor het verlegen over het hoofd.
Het is noodzakelijk voor stormloop een minicom sessie om te initialiseren het
/dev/ttyAMA0 seriële poort. Vervolgens Control-A Q te verlaten minicom zonder
Bij resetten van de seriële poort. Het is ook mogelijk om te sturen knipperen
opdrachten rechtstreeks uit binnen minicom --een 5 typen in de minicom
venster knippert van de Arduino LED 5 keer, en het is niet zelfs noodzakelijk
lokale echoinstellen. De Arduino ontvangt verzonden naar /dev/ttyAMA0
op de seriële poort van de hardware (Rx en Tx), en het kan het interpreteren wat haar weg komt
indien geprogrammeerd door een passende schets. U ziet, mensen, als u gebruiken de
Arduino als bemiddelaar, u hoeft niet te knoeien met Python of bibliotheken.
Control-A Q om af te sluiten. En Let op dat de Arduino moet beschikken over de volgende
schets geladen. Tot slot, voer de Bash-script onder vanuit de console
of een xterm.
Hier is de Arduino schets:
/*ArduinoListens.ino
Pi stuurt een cijfer (1-9) aan de Arduino,
en Arduino knippert de LED op de D13 dat vele malen.
*/
#define DELA 500 / / lang uitstellen.
#define DSHORT 250 / / Short vertraging.
Const int ledPin = 13;
VOID Setup {}
pinMode (ledPin, OUTPUT); Initialiseren pin als output.
Pin 13 heeft een LED verslaafd aan het.
Serial.begin(9600);
}
void loop {}
Als (Serial.available())
{light(Serial.read() - "0");} Hoeveel posities verleden ASCII 0?
vertraging (DELA);
}
VOID licht (int n) {}
for (int i = 0; ik < n; i ++)
{
digitalWrite (ledPin, hoge); De LED inschakelen.
delay(DSHORT);
digitalWrite (ledPin, laag); De LED uitschakelen.
delay(DSHORT); Wacht.
}
}
U kunt het downloaden hier:
http://bash.Deta.in/ArduinoListens.Ino
En hier is de Bash-script:
#! / bin/bash# Accepteert opdrachtregelprogramma arg Arduino te vertellen hoeveel keer knipperen
#+ (0 - 9).
STANDAARD = 1 # een knipoogje als geen opdrachtregel arg.
Als [- z "$1"] # als geen opdrachtregel arg...
vervolgens
knippert = $DEFAULT
anders
knippert = $1
fi
poort = / dev/ttyAMA0 # directe verbinding naar Pi rx en dx pinnen.
ECHO $blinks > $port
Exit $?
# TODO:
# ----
# 1) foutcontrole op opdrachtregelprogramma input.
# 2) meer dan 9 knippert door multi karakter opdrachtregelprogramma arg. parseren
U kunt het downloaden hier:
http://bash.Deta.in/Blink-ARD.sh
Niet een zeer complexe schets, en denk aan hoe makkelijk het zou zijn te wijzigen om te
uitvoeren van een servo of stepper motor.
Knipperen! Knipperen! Knipperen!