Archiv für den Monat: Januar 2022

Arduino Programmierung #13 – Poti dimmt LED mit PWM

Ein Potentiometer wird eingelesen mit dem AD Wandler, der Wert wird gemappt auf dem PWM Wertebereich und mit analogWrite ausgegeben zur LED.

Und hier das Programm

// Mit Poti die LED dimmen
// Poti - AD-Wandler - map - pwm - analogWrite
// Poti ist angeschlossen an Pins : 5V - A0 - GND

int analogPin = A0, LedPin = 13, adwert, pwm;

void setup() {
  Serial.begin(38400);
  pinMode(LedPin,OUTPUT);
}

void loop() {
  adwert = analogRead(analogPin);   // AD Wandler auslesen
  pwm = map(adwert, 0, 1023, 0, 255);
  analogWrite(LedPin, pwm);         // LED mit PWM ansteuern und dimmen
  Serial.println(pwm);              // Wert ausgeben
  delay(100);
}

 

Arduino Programmierung #12 – map() Funktion

Mit der map() Funktion werden Wertebereiche skaliert und in andere Wertebereiche übertragen.

und hier das Programm zum ausprobieren

// Mit Poti - AD-Wandler - map - pwm die LED Dimmen
// Poti ist angeschlossen an Pins : 5V - A0 - GND

int analogPin = A0, LedPin = 13, adwert, pwm;

void setup() {
  Serial.begin(38400);
  pinMode(13,OUTPUT);
}

void loop() {
  adwert = analogRead(analogPin);   // AD Wandler auslesen
  pwm = map(adwert, 0, 1023, 0, 255);
  analogWrite(LedPin, pwm);         // LED mit PWM ansteuern und dimmen
  Serial.println(pwm);              // Wert ausgeben
  delay(100);
}

 

Arduino Programmierung #11 – analogRead()

Die Poti Spannung wird mit den AD Wandler und analogRead() eingelesen.

Und hier das Programm dazu.

// analogRead Potentiometer
// Poti ist angeschlossen an Pins : 5V - A0 - GND

int analogPin = A0, adwert;

void setup() {
  Serial.begin(38400);
}

void loop() {
  adwert = analogRead(analogPin);  // AD Wandler auslesen
  Serial.println(adwert);          // Wert ausgeben
  delay(100);
}

 

Arduino Programmierung #10 – LED blinken ohne delay()

Die LED blinkt und der Prozessor wird nicht blockiert, er hat also Zeit andere Aufgaben zu erfüllen.

Und hier das Programm zu kopieren und ausprobieren.

// LED blinken lassen ohne delay()

int LED=13;
unsigned long neuMillis, altMillis, intervall=200;
bool ledStatus;

void setup() {
  pinMode(LED, OUTPUT);
  altMillis=0;
}

void loop() {
  neuMillis = millis();
  if( (neuMillis - altMillis) >= intervall){
    altMillis = neuMillis;
    ledStatus = !ledStatus;
    digitalWrite(LED, ledStatus);
  }
  // hier läuft der Programmcode weiter
}

 

Arduino Programmierung #9 – Serial.read() liest Ziffern vom PC ein.

Wie können Ziffern 0 – 9 vom seriellen Monitor am PC in den Arduino übergeben werden?
Dazu wird Serial.available() und Serial.read() verwendet.

Hier das Programm

// Integer Ziffer Seriell vom PC einlesen

int i,zahl;

void setup() {
  Serial.begin(38400);
  Serial.println("Hallo Shelvin.");
}

void loop() {
  if(Serial.available()) {
    i=Serial.read()-48;
    if(i>=0 && i<=9) {
      zahl=i;
      Serial.print("die Zahl ist: ");
      Serial.println(zahl);
    }
  }
}

 

Arduino Programmierung #8 – Serial.print() Ausgabe am PC

Der Arduino gibt Daten an den PC zurück in die Seriellen Monitor.
Dazu werden Serial.begin() und Serial.print() oder Serial.println() verwendet.

Hier das Programm

// Serielle Ausgabe auf der Konsole

int i=0;

void setup() {
  Serial.begin(38400);
  Serial.println("Hallo Shelvin.");
}

void loop() {
  Serial.print(i);
  Serial.println(" Sekunden");
  Serial.print("     BIN: ");
  Serial.print(i,BIN);
  Serial.print(", HEX: ");
  Serial.println(i,HEX);
  delay(1000);
  i++;
}

 

Arduino Programmierung #7 – eine eigene Funktion() schreiben

Der Programmcode wird in einer Funktion zusammengefasst und es wird eine Variable übergeben.

// Arduino #7 Blinken mit einer Funktion

int LED=13;

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  blinken(3);
  delay(1000);
  blinken(1);
  delay(1000);
}

void blinken(int Anzahl) {
  for(int i=0; i<Anzahl; i++) {
    digitalWrite(LED, HIGH);
    delay(100);
    digitalWrite(LED, LOW);
    delay(100);
  }
}