Die Programmiersprache C

Inhalt des 2. Arduino-Workshops: Variablen, Konstanten, Datentypen, Funktionen

Kommentare:
-----------
  // Der Rest der Zeile gilt nicht, ist nur Kommentar!

  /*
    Die Zeilen gelten nicht,
    sind nur Kommentar!
  */

Variablen, Konstanten, Datentypen:
----------------------------------

  int       i;         // Dies ist nur die Deklaration!
                       // D.h. der Wert ist (noch) nicht definiert...
  i = 2*3;             // ...jetzt aber, nämlich 6 wird zugewiesen!
  int       GanzeZahl = -12;
  const int PIN = 13;
  float     ZahlMitNachkommastellen = 0.25;  // würde in deutsch 0,25 geschrieben werden

  Datentypen:
    NAMEN ggf.    Mögliche Werte idR
    aus stdint.h
    ------------- ------------------------------------
    unsigned int  0      ... 65535, z.B. 12
    uint16_t      s.o.
    int           -32768 ... 32767, z.B. -12
    int16_t       s.o.

    unsigned char 0      ... 255  (8 Bit = 1 Byte)
    uint8_t       s.o.
    signed char   -128   ... 127  oder 'A','a','x',...
    int8_t        s.o.
    char          Intel/AVR(ATmega): wie signed char  ARM: wie unsigned char

    long int      −2147483647 ... +2147483647  (ca. ± 2 Millarden)
    int32_t       s.o.

    float         -3.4028235E+38 ... 3.4028235E+38
                  z.B.: 0.25 oder -3.333
                  Genauigkeit: 6 bis 7 Ziffern, z.B.:  123.456  sind 6 Ziffern
                  En bedeutet *10^n (also n Nullen Anfügen bzw. Dezimalpunkt n
                    Stellen nach links), z.B.: 1.2e3 = 1200
    double        wie float, nur genauer und größer möglich
                  kann auch als "double float" geschrieben werden

Funktionen:
-----------

  Mathe (zum Vergleich):
    summe: R x R -> R; x,y |-> x+y
    
  C:
    float summe(float x, float y)
    {
      return ( x+y );
    }

  // kam eigentlich schon als Arduino-Grundkonstrukt vor:
  void setup()    // void heißt, daß  nix  geliefert wird (kein return)!
  {
    // ... Programmcode in C
  }
  void loop()
  {
    // ... Programmcode in C
  }

Einfacher Lauflicht-Code aus WS(1):

const int PIN_LED0 = 13;
const int PIN_LED1 = 4;
const int PIN_LED2 = 5;
const int PIN_POTI = A0;

void setup()
{
  pinMode(PIN_LED0, OUTPUT);
  pinMode(PIN_LED1, OUTPUT);
  pinMode(PIN_LED2, OUTPUT);
  // Analog-Pin PIN_POTI muß nicht initialisiert werden.
}

void loop()
{
  int poti = analogRead(PIN_POTI);

  digitalWrite(PIN_LED0, 1);
  delay(poti);
  digitalWrite(PIN_LED0, 0);

  digitalWrite(PIN_LED1, 1);
  delay(poti);
  digitalWrite(PIN_LED1, 0);

  digitalWrite(PIN_LED2, 1);
  delay(poti);
  digitalWrite(PIN_LED2, 0);
}

Einfacher Lauflicht-Code mit Funktion "leuchte":

const int PIN_LED0 = 3;
const int PIN_LED1 = 5;
const int PIN_LED2 = 6;
const int PIN_POTI = A0;

void setup()
{
  pinMode(PIN_LED0, OUTPUT);
  pinMode(PIN_LED1, OUTPUT);
  pinMode(PIN_LED2, OUTPUT);
  // Analog-Pin PIN_POTI muß nicht initialisiert werden.
}

void leuchte(int pin, int zeit)
{
  digitalWrite(pin, 1);
  delay(zeit);
  digitalWrite(pin, 0);
}

void loop()
{
  int poti = analogRead(PIN_POTI);
  leuchte(PIN_LED0, poti);
  leuchte(PIN_LED1, poti);
  leuchte(PIN_LED2, poti);
}

Einfacher PWM-Code:

const int PIN_LED0 = 13;
const int PIN_POTI = A0;

void setup()
{
  pinMode(PIN_LED0, OUTPUT);
  // Analog-Pin PIN_POTI muß nicht initialisiert werden.
}

void loop()
{
  int poti = analogRead(PIN_POTI);

  digitalWrite(PIN_LED0, 1);
  delayMicroseconds(poti);
  digitalWrite(PIN_LED0, 0);
  delayMicroseconds(1023-poti);
}

Mit PWM Hardware Einheit realisiert:

void loop()
{
  int poti = analogRead(PIN_POTI) / 4;  // -> 0..255

  analogWrite(PIN_LED0, poti);

  delay(100);  // optional
}

Einfacher Lauflicht-Code mit Dimmen:

const int PIN_LED0 = 3;
const int PIN_LED1 = 5;
const int PIN_LED2 = 6;

void setup()
{
  pinMode(PIN_LED0, OUTPUT);
  pinMode(PIN_LED1, OUTPUT);
  pinMode(PIN_LED2, OUTPUT);
}

void loop()
{
  analogWrite(PIN_LED0, 255);
  analogWrite(PIN_LED1, 0);
  analogWrite(PIN_LED2, 0);
  delay(400);

  analogWrite(PIN_LED0, 60);
  analogWrite(PIN_LED1, 255);
  analogWrite(PIN_LED2, 0);
  delay(400);

  analogWrite(PIN_LED0, 20);
  analogWrite(PIN_LED1, 60);
  analogWrite(PIN_LED2, 255);
  delay(400);

  analogWrite(PIN_LED0, 0);
  analogWrite(PIN_LED1, 20);
  analogWrite(PIN_LED2, 60);
  delay(400);

  analogWrite(PIN_LED0, 0);
  analogWrite(PIN_LED1, 0);
  analogWrite(PIN_LED2, 20);
  delay(400);
}

Dieses Thema existiert noch nicht

Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert. Sie können die Seite mit dem Knopf Seite anlegen selbst anlegen und mit Inhalt füllen.