wtorek, 11 grudnia 2012

Szeregowo i kolorowo...

Dużo czasu minęło od ostatniego posta... Spręża brak, więc na dobry początek coś łatwego, szybkiego i... mało potrzebnego.

Potrzebowałem zobaczyć, jak skomplikowane jest komunikowanie się aplikacji uruchomionej na komputerze z Arduino. Oczywiście wybór padł na  złącze szeregowe :/

Pytanie, czym sterować, żeby się nie narobić... Albo serwo, a może jakaś dioda? A może dioda RGB? Akurat miałem pod ręką małe trójkolowe coś w wersji smd, więc...

Najpierw mała aplikacja w Processingu, ot trzy suwaki...


Każdy z "suwaków" aktualizuje poszczególne składowe, które następnie są łączone w jeden łańcuch i wysyłane przez port szeregowy do Arduino:

float mr = map(r, 0, 255, 0, 255);
float mg = map(g, 0, 255, 0, 255);
float mb = map(b, 0, 255, 0, 255);

String rgbString = str((int)mr) + " " + str((int)mg) + " " + str((int)mb) + "\n";
print("rgbString:"); println(rgbString);
port.write(rgbString);

Arduino zaś odbiera łańcuch i parsuje poszczególne składowe:

if (Serial.available() > 0) {
    redValue   = Serial.parseInt();
    greenValue = Serial.parseInt();
    blueValue  = Serial.parseInt();
        
    if (Serial.read() == '\n') {
        redValue   = constrain(redValue, 0, 255);
        greenValue = constrain(greenValue, 0, 255);
        blueValue  = constrain(blueValue, 0, 255);

        analogWrite(redPin,  redValue);
        analogWrite(greenPin,greenValue);
        analogWrite(bluePin, blueValue);
    }
}

Próby wysyłania poszczególnych składowych osobno, jako sekwencja bajtów, się nie sprawdziła, więc póki co pozostaje tworzenie łańcucha znaków...

A działa to mniej więcej tak:


Kody źródłowe:

Brak komentarzy:

Prześlij komentarz