Raspberry Pi - Arduino anslutning (7 / 9 steg)
Steg 7: Programvara, del 2: Pi skickar data till Arduino (blinkar en LED)
Arduino hur många tid för att blinka en LED. Vi använder Arduino's ombord
LEDDE i D13 för enkelhet, men det är säkerligen eventuellt ändra de
LedPin variabel i skiss och krok upp en utombordare LED plus resistor
mellan lämplig digital pin och marken.
"Föraren" är ett kort skalskript. Just det, en ödmjuk Bash script.
I själva verket, är det även möjligt att göra det direkt från kommandoraden i
konsolen eller i en xterm: eko 3 >/dev/ttyAMA0 för tre blinkar, för
exempel, eller echo 7 >/dev/ttyAMA0 för sju blinkar. Ingen Python programmering
och ingen bibliotek att installera! Tja, jag vet inte mycket vård för pytonormar eller elaka
sorters ormar att linda runt och krossa dig. Om jag stöter på en,
Jag är skyldig att Bash det över huvudet.
Det är nödvändigt att köra en minicom session för att initiera den
/dev/ttyAMA0 seriell port. Sedan Control-A Q för att avsluta minicom utan
återställa den seriella porten. Observera att det också är möjligt att skicka blink
kommandon direkt från inom minicom --att skriva en 5 i minicom
fönstret blinkar den Arduino LED 5 gånger, och det är inte ens nödvändigt
Ställ in lokalt eko. Arduinoen mottar något skickas till /dev/ttyAMA0
på dess hårdvara serieport (Rx och Tx), och det kan den tolka vad kommer i dess väg
om programmerad av en lämplig skiss. Du ser, folk, om du använder den
Arduino som en mellanhand, du behöver inte röra med Python eller bibliotek.
Control-A Q för att avsluta. Och observera att Arduino måste ha följande
skissen laddats. Sedan slutligen köra Bash-script nedan från konsolen
eller en xterm.
Här är den Arduino skissen:
/*ArduinoListens.ino
PI skickar en siffra (1-9) till Arduino,
och Arduino blinkar lampan i D13 som många gånger.
*/
#define DELA 500 / / lång fördröjning.
#define DSHORT 250 / / kort fördröjning.
CONST int ledPin = 13.
void setup() {
pinMode (ledPin, produktionen); Initiera pin som utdata.
Stift 13 har en lysdiod ansluten till den.
Serial.BEGIN(9600);
}
void loop() {
om (Serial.available())
{light(Serial.read() - "0");} Hur många positioner förbi ASCII 0?
fördröjning (DELA);
}
void light (int n) {
för (int jag = 0; jag < n; i ++)
{
digitalWrite (ledPin, hög); Aktivera LED.
Delay(DSHORT);
digitalWrite (ledPin, låg); Stänga av lampan.
Delay(DSHORT); Vänta.
}
}
Du kan hämta den här:
http://bash.Deta.in/ArduinoListens.ino
Och här är Bash-script:
#! / bin/bash# Accepterar kommandoradsverktyget arg talar om Arduino hur många gånger blinka
#+ (0 - 9).
STANDARD = 1 # en blink om ingen kommandoradsverktyget arg.
om [- z "$1"] # om ingen kommandoradsverktyget arg...
sedan
blinkar = $DEFAULT
annat
blinkar = $1
Fi
Port = / dev/ttyAMA0 # direktanslutning till Pi rx och dx stift.
ECHO $blinks > $port
avsluta $?
# TODO:
# ----
# 1) felkontroll på kommandoraden input.
# 2) mer än 9 blinkar av parsning flera karaktär kommandoradsverktyget arg.
Du kan hämta den här:
http://bash.Deta.in/Blink-ARD.sh
Inte en mycket komplex skissa och tänka på hur lätt det skulle vara att ändra det för att
köra ett servo eller stepper motor.
Blink! Blink! Blinka!