11-12-2016, 01:21
W moim projekcie (rotor antenowy) potrzebowałem wzajemnego przypisywania zmiennych przez 2 arduino połączone interface'm szeregowym. Przez 2 dni szukania w necie nie znalazłem prostego rozwiązania, więc musiałem sam pokombinować.
Poniżej jest przykład sterowania diodą RGB z monitora portu lub innego arduino. W "void serialEvent()" wytłumaczenie "co do czego".
Może komuś się przyda
Pozdrawiam SQ4KDG
Poniżej jest przykład sterowania diodą RGB z monitora portu lub innego arduino. W "void serialEvent()" wytłumaczenie "co do czego".
Może komuś się przyda
Kod:
/*
program pokazuje sposob zmiany wartosci zmiennych przy pomocy komend z monitora portu lub innego arduino
By SQ4KDG 2016
*/
// pins for the LEDs:
const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;
// zmienne
int red, green, blue ;
int nr, w;
int r, g, b;
//////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
Serial.setTimeout (3);
// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);*/
}
////////////////////////////////////////////////////////
void loop() {
if (r != red || g != green || b != blue) {
Serial.print("czerwony: "); Serial.println(red);
Serial.print("zielony: "); Serial.println(green);
Serial.print("niebieski: "); Serial.println(blue);
r = red;
g = green;
b = blue;
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
}
void serialEvent() {
while (Serial.available() > 0) {
// wartości zmiennych wpisujemy w monitorze portu jako pary liczb oddzielone spacja
// pierwsza liczba z kazdej pary to numer zmiennej ktorej chcemy nadac nowa wartosc
// droga liczba z kazdej pary to nowa wartosc tej zmiennej
// np. "1 200" (to jedna para liczb)
// albo "2 1 1 20" (tu mamy dwie pary liczb)
// albo nawet "3 234 1 23 2 45 1 66" (w tym wypadku po oproznieniu bufora zmienna nr 1 przyjmie wartosc 66 a nie 23)
nr = Serial.parseInt(); //numer zmiennej
w = Serial.parseInt(); //wartosc zmiennej
if (nr == 1) {
red = w;
}
else if (nr == 2) {
green = w;
}
else if (nr == 3) {
blue = w;
}
// Serial.print(nr); Serial.print(' '); Serial.println(w);
}
}