Arduino Tag 2 und 3

Das Experimentation Kit mit Arduino Uno R3

Inzwischen habe ich zwei weitere Tage (oder eher Nächte) mit Arduino hinter mir. Mein Experimental Kit von www.oomlout.com ist angekommen. Tag 2 bestand vor allem darin, das Board mit dem Steckbrett zusammenzuschrauben und das ganze Material in eine Schachtel wegzuräumen. Dabei habe ich endlich einmal eine Verwendung für all die Styropor-Abfälle, die wir seit Jahren brav sammeln in der Hoffnung, sie irgendwann für irgendetwas zu verwenden. Und siehe da, Styropor ist ideal, um die ganzen elektronischen Komponenten übersichtlich in Reih und Glied zu stecken. Gewissermassen das elektronische Nadelkissen für die durchdigitalisierte Hausfrau. Für mehr als das erste Experiment hat es nicht gereicht (schon wieder ein blinkendes LED, aber dieses Mal mit Steckbrett und Arduino Uno R3).

Elektronisches Nadelkissen der digitalisierten Hausfrau

Heute hab ich mir dann zielstrebig Experimente herausgesucht, die Richtung Treibhaussteuerung gehen. Experiment Nr. 10 bindet einen Temperatursensor ein und gibt die Werte am seriellen Monitor aus. Mit den Schaltplänen und dem Manual war das absolut problemlos. Da ich es zwar ganz nett finde, im Blog eine Art Tagebuch der verschiedenen Experimente zu haben, ein Blog aber andererseits zum Nachschlagen von bestimmten Informationen nicht unbedingt optimal ist, habe ich mit einem „Arduino Cheat Sheet“ begonnen, das hoffentlich in der nächsten Zeit wächst und gedeiht. Hier der

Als nächstes verbiss ich mich ins Experiment Nr. 12, die Steuerung eines RGB-LEDs. Hier kämpfte ich zuerst mit der Verkabelung, da es auf dem Website von Oomlout mehrere Varianten des Experiments gibt. Bei einem Schaltplan geht die Verkabelung vom langen Fuss des LED zur Stromversorgung, beim anderen zur Masse. Der Schaltplan unter http://ardx.org/src/circ/CIRC12-sheet-ADAF.pdf mit der Verbindung zum 5V-Pin erwies sich als richtig. Hier der Bestückungsplan für eine RGB-LED:

Bestückungsplan RGB-LED

Als Alternative zur seriellen Schnittstelle wollte ich nun das mehrfarbige LED einbinden. Die Idee ist, dass man eine Temperatur in einem bestimmten Bereich, z.B. von -15 bis + 35 Grad in Farbwerte von Blau über Grün zu Rot anzeigt. Das Programm dazu steht bereits, als nächstes geht es darum, Schaltungen und Programme zusammenzuhängen, aber das wird nicht mehr heute sein.


//Programm simuliert allmählichen Temperaturwechsel von -15 bis +35 Grad
//und zeigt Temperatur in diesem Bereich mit einem Farbverlauf in einem RGB-LED an,
//wobei kalte Temperaturen blau, mittlere grün und heisse Temperaturen rot angezeigt werden
int ledAnalogOne[] = {6, 5, 3}; //3 PWM-LEDs: 6 Rot, 5 Grün, 3 Blau

int temperature = 15;
int range = 50;
int start = -15;
int red = 0;
int green = 0;
int blue = 0;
float tmp = 0.0;
int mydelay = 100;

byte  black[] = {0, 0, 0};

void setup(){
  Serial.begin(9600);
  for(int i = 0; i < 3; i++){
   pinMode(ledAnalogOne[i], OUTPUT);   //Set the three LED pins as outputs
  }
  setColor(ledAnalogOne, black);
}

void loop(){
  for (int temperature =  start; temperature <= start + range; temperature++){
    tmp = 2 * 255 / range;
    //if (temperature
    if (temperature <  start + (range / 2)) {
      red = 0;
      green = (temperature - start) * tmp;
      blue = 255 - ((temperature - start) * tmp);
    } else {
      red = (temperature - (range/2)- start) * tmp;
      green = 255 - ((temperature - (range/2) - start) * tmp);
      blue = 0;
    }

    Serial.print(red);
    Serial.print("/");
    Serial.print(green);
    Serial.print("/");
    Serial.println(blue);
    byte color[] = {red, green, blue};
    setColor(ledAnalogOne, color);
    delay(mydelay);
  }
  setColor(ledAnalogOne, black);
  delay(1000);
}

int getRandomTemperature(int start, int range) {
  randomSeed(millis());
  return random(start, start + range);
}

void setColor(int* led, byte* color){
 for(int i = 0; i < 3; i++){             //Iteration durch die 3 Pins
   analogWrite(led[i], 255 - color[i]);
 }
}

Comments are closed.