Dieses Blog durchsuchen

Sonntag, 27. August 2017

Arduino Tutorial

Hallo,

ich fange hier mit einen Arduino Tutorial an. Hiermit werden wir eine kleine Wetterstation für zu Hause bauen. Die Teile liste ich genau auf. Bitte lest das Tutorial von vorne weg. Ich werde auch einige weitere Sachen zusätzlich erklären, die möglicherweise wichtig sind.

Hier ist Part 1

Benötigte Teile:
Hardware
Software
  • Arduino IDE


Im heutigen Schritt erstellen wir als erstes eine einfache Schaltung, und machen eine LED welche im Takt des Loops blinkt.
Im nächsten Teil werden wir dann weitermachen.

Erst mal die Schaltung - für das Zeichen der Schaltung verwende ich Fritzing, zum Programmieren des Codes verwende ich die Arduino IDE.

1. Schaltung mit Arduino UNO


2. Schaltung mit Arduino Mega
Das ist der erste Teil. Jetzt mal kurz eine Erklärung. Warum 220 Ohm

Rote Leds benötigten je nach Aufbau (GaAsP, oder GAP) 1,6 Volt oder 2,1 Volt. Der Arduino hat eine Spannung von 5 Volt auf den digitalen Pins, mit einem Strom von 20 mA

Somit können wir ausrechnen, wieviel Spannung abfallen muss, damit wir die LED nicht überlasten.
Ich verwende dazu eine PSPICE Grafik um das zu veranschaulichen.


 dann kommen wir jetzt zum Code.
da der Arduino UNO 16 MHZ hat, wäre ein Loop wohl etwas zu schnell. Daher werden wir als Schritt eins einen Delay einbauen sagen wir 1000 ms.

Als erstes sehen wir uns den Code an.
Wenn man einen neuen Sketch in der Arduino IDE erstellen - sehen wir folgendes.

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run
repeatedly:
 }
 Code innerhalb von void setup() wird beim starten des Programmes einmal ausgeführt.
Code innerhalb von void loop() wird immer wieder ausgeführt. Dort werden wir auch unseren Delay einbauen. Der Code sieht dann so aus: 

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:


delay(1000);
}


 delay(1000); ist der befehl dass der Arduino 1000ms wartete bevor der Loop erneut startet. Mit der zahl stellt man die ms ein.

als nächstes müssen wir unseren Pin defineren. Hier haben wir 2 Codes. Einen für den Uno und einen für dem Mega . der Unterschied ist lediglich die PIN Nummer.
wird definieren den Pin mit einen #define befehl. dieser wird noch vor das void setup() geschrieben

#define led_pin 13    <-- Arduino UNO
#define led_pin 22    <-- Arduino MEGA

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:


delay(1000);
}


jetzt haben wir unseren Pin definiert. diesen werden wir nun im void setup einstellen. 

#define led_pin 13
void setup() {
  // put your setup code here, to run once:
  pinMode(led_pin,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:


delay(1000);
}


 mit pinMode kann der Modus des Pins eingestellt werden. Der erste Wert ist die Pinnummer der zweite wert entweder INPUT oder OUTPUT. da wir eine LED leuchten lassen wollen, setzten wir den Wert auf Output.
Wenn wir uns den define Befehl sparen wollen könnten wir auch pinMode(13,OUTPUT); schreiben.

Nun generieren wir eine Variable, die den Status der LED hält. Damit wir auch blinken können.

#define led_pin 13
bool led_status = false;
void setup() {
  // put your setup code here, to run once:
  pinMode(led_pin,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:


delay(1000);
}


 bool led_status = false, bedeutet das der wert des leds aktuell 0 ist. Bool ist ein Datentyp der nur 2 Zustände haben kann, true oder false.

Jetzt müssen wir diesen Status bei jedem Durchlauf umschalten. 

 #define led_pin 13
bool led_status = false;
void setup() {
  // put your setup code here, to run once:
  pinMode(led_pin,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

led_status = !led_status;
delay(1000);
}


led_status = !led_status bedeutet das die boolsche Variable negiert wird, und sich setzt. Das ! bedeutet nicht. Somit wenn led_status true ist, wird er nachher false und vice versa.

Und jetzt muss es noch leuchten. Das erreichen wir mit einem digitalWrite befehl, der den aktuellen Wert an den Pin sendet und somit das Led leuchten lässt oder auch nicht.

#define led_pin 13
bool led_status = false;
void setup() {
  // put your setup code here, to run once:
  pinMode(led_pin,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(led_pin, led_status);
led_status = !led_status;
delay(1000);
}


 So das war der erste Teil des Tutorials - wir sehen uns im nächsten Teil.

Keine Kommentare: