project 14 Tweak the Arduino Logo blz 145. terug naar de inleiding
Via deze schets worden 8 bit getallen via de seriele poort naar een processing schets gestuurd
Met deze getallen kan je de achtergrondskleur van een afbeelding varieren
Bij mij verloopt de communicatie nogal instabiel !!
void setup() {
// De seriele communicatie initialiseren.
Serial.begin(9600);
}
void loop() {
//De spanning op de arm van de potmeter wordt door de analoge inputpin uitgelezen
//met analogRead omgezet in een 10 bit getal, delen door 4 omzetten in een 8 bit getal
//De analoge pin schrijft het 8 bit getal naar de seriele poort
Serial.write(analogRead(A0/4));
//delay van 20 milliseconde zodat er 8 bit pulstreinjes naar de poort worden gestuurd
delay(20);
}
//Het getal wordt via de seriele poort in processing geimporteerd
De processing schets
De processing ide downloaden
colorMode() zet de RGB om in HSB
import processing.serial.*;
// een object van de seriele poort aanmaken
Serial myPort;
// Het PImage object "logo" aanmaken.
PImage logo;
// De variabele waarin de achtergrondkleur van het logo komt
// Het logo is een png plaatje dus de achtergrond is kleurloos.
int bgcolor = 0;
void setup() {
// ipv size() wordt hier surface gebruikt.
// Surface is een object van de java classs "PSurface".
// Het object niet declareren want er is maar een surface.
surface.setResizable(true);
// zet color in Hue/Saturation/Brightness mode
colorMode(HSB, 255);
// Hue is de kleur tussen 0 en 360.
// Saturation tussen 0 en 100 % mengt de kleur met wit.
// Brightness tussen 0 en 100 % mengt de kleur met zwart.
// Met het tweede argument (255) in colorMode verandert de range van H, S en B naar [0,255]
// Laad het logo in het Pimage object. Een ander png plaatje mag natuurlijk ook
logo = loadImage("http://www.arduino.cc/arduino_logo.png");
surface.setSize(logo.width, logo.height);
// De poort staat in de arduino ide. In mijn geval is dit /dev/ttyACM0
myPort = new Serial(this, "/dev/ttyACM0", 9600);
}
void draw() {
// Als er data binnenkomt en de poort is beschikbaar
if (myPort.available() > 0) {
// lees het 8 bit getal van de arduino en stop het in bgcolor
bgcolor = myPort.read();
// De waarde printen
println(bgcolor);
}
// In background de 8 bit waarden invoeren want
// H, S en B zijn in colorMode gemapt naar [0,255]
background(bgcolor, 255, 255);
// Het logo tekenen start in de li bovenhoek
image(logo, 0, 0);
}