MEGA2560 Mikrocontroller Lernset
1. INHALTSVERZEICHNIS ME 1. 2. 3. 4. 5. 6. 7. Inhaltsverzeichnis Allgemeine Informationen Softwareinstallation Widerstände Lektionen 1. Lektion : Hallo Welt 2. Lektion : Blinkende LED 3. Lektion : PWM Lichtkontrolle 4. Lektion : Ampellichter 5. Lektion : LED Jagd-Effekt 6. Lektion : Tastengesteuerte LED 7. Lektion : Responder Experiment 8. Lektion : Aktiver Summer 9. Lektion : Passiver Summer 10. Lektion : Analogwert auslesen 11. Lektion : Fotowiderstand 12. Lektion : Flammensensor 13.
1. ALLGEMEINE INFORMATIONEN Sehr geehrter Kunde, vielen Dank, dass Sie sich für unser Produkt entschieden haben. Im Folgenden zeigen wir Ihnen, was bei der Inbetriebnahme und der Verwendung zu beachten ist. Sollten Sie während der Verwendung unerwartet auf Probleme stoßen, so können Sie uns selbstverständlich gerne kontaktieren. Technische Daten Unser Board ist ein hochwertiger Nachbau und kompatibel mit dem Arduino Mega 2560. Es handelt sich aber ausdrücklich nicht um einen originalen Arduino.
Anschlussbelegung USB-B-Port Spannungsregler ICSP für USB AREF IOREF Reset GND PWM Schnittstelle Energieversorgung Analoge Eingänge TXO RXO Kommunikationsschnittstelle Digitale I/O Pins www.joy-it.net Pascalstr.
3. SOFTWAREINSTALLATION Damit man mit der Programmierung des Joy-IT ard_Mega2560R3 beginnen kann, muss vorab auf dem Computer, der für das Programmieren verwendet wird, eine Entwicklungsumgebung, sowie die Treiber für das zugehörige Betriebssystem, installiert werden. Als Entwicklungsumgebung bietet sich die Arduino DIE an (welche Sie hier zum Download finden), die von dem Arduino Hersteller als OpenSource Software unter der GPLv2 veröffentlicht wurde, die sich vom Konzept und Aufbau an Einsteiger richtet.
4. WIDERSTÄNDE In diesem Set befinden sich drei verschiedene Widerstände 220 Ω, 1 kΩ und 10 kΩ. Auf Widerständen befindet sich eine Farbcodierung mit welcher man den Widerstand berechnen oder erkennen kann, wenn man diesen nicht mittels eines Multimeters nachmessen kann. In diesem Kapitel lernen Sie wie Sie dies Widerstände berechnen können um die folgenden Lektionen besser durchführen zu können, denn Sie müssen die verschiedenen Widerstände identifizieren können um die Aufbauten korrekt nachzubauen.
Betrachten wir nun unsere Widerstände lassen sich diese schnell berechnen. Beginnen wir mit dem 220 Ω Widerstand. 5. Ring (Toleranz): Braun : 1 % 1. Ring: Rot : 2 2. Ring: Rot : 2 3. Ring: Schwarz : 0 4. Ring (Multiplikator): Schwarz : - Durch die Widerstandszähler ergibt sich die Zahl 220. Dadurch das der Multiplikator keinen Wert besitzt, kann der Widerstand auf 220 Ω bestimmt werden mit einer Toleranz von 1 %, welcher dieser Widerstand abweichen kann. 5. Ring (Toleranz): Braun : 1 % 1.
5. LEKTIONEN Lektion 1 : Hallo Welt Wir beginnen mit etwas simplem. Für dieses Projekt benötigt man nur die Platine und ein USB Kabel, um die Lektion zu starten. Dies ist ein Kommunikationstest für deinen Mega2560 und deinen PC, sowie ein grundlegendes Projekt für Ihren ersten Versuch in der Arduino Welt! Nachdem die Installation der Treiber abgeschlossen ist, lass uns die Arduino Software öffnen und einen Code verfassen, welcher es dem Mega2560 ermöglicht Hallo Welt! unter deiner Anweisung anzuzeigen.
Klicken Sie auf den seriellen Monitor und füge R , dann wird die LED auf dem Board aufleuchten und Ihr PC wird die Information Hallo Welt! vom Arduino erhalten. Lektion 2: Blinkende LED In dem Hallo Welt! Programm sind wir der LED bereits begegnet. Diesmal werden wir eine LED mit einem der digitalen Pins verbinden. Es werden die folgenden Teile benötigt: 1x Mega2560 Platine 1x USB-Kabel 1x Rote M5 LED 1x 220 Ω Widerstand 1x Breadboard 2x Überbrückungskabel www.joy-it.net Pascalstr.
Wir folgen dem folgendem Schaltplan. Hier benutzen wir den digitalen Pin 10. Wir verbinden die LED mit einem 220 Ω Widerstand um Beschädigungen durch zu hohem Strom zu vermeiden. www.joy-it.net Pascalstr.
int ledPin = 10; // Definiert Digital Pin 10. void setup() { pinMode(ledPin, OUTPUT); // Definiert Pin mit verbundener LED als Ausgang. } void loop() { digitalWrite(ledPin, HIGH); // Schaltet die LED ein. delay(1000); // Wartet eine Sekunde. digitalWrite(ledPin, LOW); // Schaltet die LED aus. delay(1000); // Wartet eine Sekunde } Nachdem Hochladen des Programmes werden Sie die LED, welche mit Pin 10 verbunden ist, im 1-Sekundentakt aufleuchten sehen.
Es gibt viele Anwendungsfälle für PWM: Regulierung der Lampenhelligkeit, Regulierung der Motorengeschwindigkeit usw.. Das sind die drei Grundparameter von PWM: 1. Die Amplitude der Impulsbreite (Minimum / Maximum) Die Pulsperiode (Die gegenseitige Pulsfrequenz in einer Sekunde) Der Spannungspegel (wie: 0 - 5 V) 2. 3. Es gibt 6 PWM Schnittstellen auf dem Mega2560: digitaler Pin 3, 5, 6, 9, 10 und 11.
Der Eingang des Potentiometers ist analog, also verbinden wir ihn mit dem analogen Port. Die LED verbinden wir mit dem PWM-Port. Ein anderes PWM-Signal kann die Helligkeit der LED regulieren. www.joy-it.net Pascalstr.
In diesem Experiment werden wir den Analogwert des Potentiometers lesen und den wert dem PWM-Port zuordnen, sodass eine entsprechende Änderung der Helligkeit der LED beobachtet werden kann. Außerdem werden wir den Analogwert auf dem Bildschirm anzeigen.
1x Grüne M5 LED 3x 220 Ω Widerstand 1x Breadboard 4x Überbrückungskabel www.joy-it.net Pascalstr.
Da dies eine Situation von Ampellichtern ist, sollte die Leuchtzeit jeder einzelnen LED genau so lange, wie bei einer echten Ampel sein. In diesem Programm werden wir die Arduino-Verzögerungsfunktion nutzen, um die Verzögerungszeit zu kontrollieren.
6x M5 LED 6x 220 Ω Widerstand 1x Breadboard 13x Überbrückungskabel www.joy-it.net Pascalstr.
int BASE = 2 ; // Der I/O Pin für die erste LED # int NUM = 6; // Anzahl der LEDs void setup() { for (int i = BASE; i < (BASE + NUM); i ++) { pinMode(i, OUTPUT); // Setzt I/O Pinne als Ausgang } } void loop() { for (int i = BASE; i < (BASE + NUM); i ++){ digitalWrite(i, LOW); // Setzt I/O Pinne auf „niedrig“ // schaltet die LEDs nacheinander ein delay(200); // Verzögerung } for (int i = BASE; i < (BASE + NUM); i ++) { digitalWrite(i, HIGH); // Setzt I/O Pinne auf „hoch“, // schaltet die LEDs nacheinander a
Lektion 6: Tastengesteuerte LED I/O-Port ist eine Schnittstelle, welche als Eingang und als Ausgang fungiert. Bis jetzt haben wir nur den Ausgang benutzt. In diesem Experiment werden wir versuchen den Eingang zu benutzen, um den Ausgangswert des angeschlossenen Gerätes auslesen zu können. Wir werden eine Taste und eine LED als Eingang und als Ausgang verwenden, um ein besseres Verständnis über die I/O-Funktion zu bekommen.
10 kΩ 220 Ω int ledpin=11; // Initialisiert Pin 11 int inpin=7; // Initialisiert Pin 7 int val; // Definiert „Val” void setup() { pinMode(ledpin,OUTPUT); // Setzt LED Pin als „Ausgang“ pinMode(inpin,INPUT); // Setzt Tastenpin als „Eingang“ } void loop() { val=digitalRead(inpin); // Liest den Pegelwert von Pin 7 und ordnet diesen „Val“ zu if(val==LOW) // Prüft ob die Taste gedrückt wird, falls ja wird die LED eingeschalte { digitalWrite(ledpin,LOW); } else { digitalWrite(ledpin,HIGH); } } Wenn die Taste ge
Lektion 7: Responder Experiment In dieser Lektion gibt es drei Tastenschalter und eine Reset-Taste, welche mit Hilfe von 7 digitalen I/O Pins die 3 entsprechenden LEDs steuern. Hierzu benötigen Sie: 1x Mega2560 Platine 1x USB-Kabel 7x 220 Ω Widerstand 1x Rote M5 LED 1x Gelbe M5 LED 1x Grüne M5 LED 4x Tastenschalter 1x Breadboard 13x Überbrückungskabel www.joy-it.net Pascalstr.
int int int int int int int int int int redled=8; // Pin für rote LED yellowled=7; // Pin für gelbe LED greenled=6; // Pin für grüne LED redpin=5; // Pin für rote Taste yellowpin=4; // Pin für gelbe Taste greenpin=3; // Pin für grüne Taste restpin=2; // Pin für Reset-Taste red; yellow; green; void setup() { pinMode(redled,OUTPUT); pinMode(yellowled,OUTPUT); pinMode(greenled,OUTPUT); pinMode(redpin,INPUT); pinMode(yellowpin,INPUT); pinMode(greenpin,INPUT); } www.joy-it.net Pascalstr.
void loop(){ //Liest wiederholt die Pinne der Tasten red = digitalRead(redpin); yellow = digitalRead(yellowpin); green = digitalRead(greenpin); if(red==LOW)RED_YES(); if(yellow==LOW)YELLOW_YES(); if(green==LOW)GREEN_YES(); } void RED_YES(){// Führt den Code aus bis rote LED an ist // endet den Kreislauf wenn die Reset-Taste betaetigt wird while(digitalRead(restpin)==1){ digitalWrite(redled,HIGH); digitalWrite(greenled,LOW); digitalWrite(yellowled,LOW); } clear_led(); } void YELLOW_YES(){// Fuehrt den Code a
Achten Sie darauf, dass Sie beide Codeteile in Ihrem Sketch der Arduino IDE hinzufügen. Wenn eine Taste betätigt wird, schaltet sich die entsprechende LED ein. Wir die Reset-Taste betätigt, schaltet sich die entsprechende LED wieder aus. Lektion 8: Aktiver Summer Aktive Summer werden in Computern, Druckern, Weckern, Elektrospielzeug etc. als ein Geräusch emittierendes Element eingesetzt. Es hat eine innere Vibrationsquelle. Mit einer 5V-Energieversorgung verbunden, kann es wiederholt summen.
int buzzer=8; // Initialisiere digitalen I/O Pin, welcher den Summer kontrolliert void setup() { pinMode(buzzer,OUTPUT); // Stellt den Pin Modus auf „Ausgang“ } void loop() { digitalWrite(buzzer, HIGH); // Macht Geräusche } Das Projekt ist nach dem Übertragen des Programms abgeschlossen. Der Summer wird nach der Übertragung mit Strom versorgt und wird Geräusche erzeugen. www.joy-it.net Pascalstr.
Lektion 9: Passiver Summer Mit dem Mega2560 sind viele interaktive Projekte möglich. Die bisherigen Projekte haben sich hauptsächlich mit LEDs beschäftigt, doch ein häufig verwendetes Projekt ist das akustisch-optische Display. Hierfür wird ein passiver Summer verwendet, der sich im Gegensatz zum aktiven Summer, nicht selbst aktivieren kann. Die Aktivierung erfolgt über eine Pulsfrequenz. Unterschiedliche Frequenzen resultieren beim Summer in unterschiedlichen Tönen.
int buzzer=8; // Wählt digitalen I/O Pin für den Summer aus void setup() { pinMode(buzzer,OUTPUT); // Setzt die digitale IOs als Ausgang.
Lektion 10: Analogwert auslesen In diesem Projekt geht es um die analogen Schnittstellen des Mega2560. Ein analogRead()-Befehl kann den Wert der Schnittstelle lesen. Durch die Analog-Digital-Umwandlung des Mega2560 liegen die ausgelesenen Werte zwischen 0 und 1023. Um die Werte auslesen zu können, ist es wichtig auf die richtige Baudrate zu achten (hier: 9600). Die Baudrate des Computers sollte der Baudrate des Gerätes entsprechen.
int potpin=0; // Initialisiert analogen Pin 0 int ledpin=13; // Initialisiert digitalen Pin 13 int val=0; // Definiert „Val“, ordnet Ursprungswert zu void setup() { pinMode(ledpin,OUTPUT); // Setzt digitalen Pin als „Ausgang“ Serial.
Lektion 11: Fotowiderstand Ein Fotowiderstand ist ein Widerstand, dessen Widerstandskraft je nach einfallender Lichtstärke variiert. Er basiert auf dem fotoelektrischen Effekt von Halbleitern. Wenn das einfallende Licht intensiv ist, reduziert sich die Widerstandskraft. Wenn das einfallende Licht schwach ist, erhöht sich die Widerstandskraft.
10 kΩ 220 Ω int potpin=0; // Initialisiert analogen Pin 0 an dem Photovaristor angeschlossen ist int ledpin=11; // Initialisiert digitalen Pin 11 // Ausgang welcher die Helligkeit der LED reguliert int val=0; // Initialisiert Variable „Val“ void setup() { pinMode(ledpin,OUTPUT); // Stellt Pin 11 als Ausgang ein Serial.begin(9600); // Setzt Baudrate auf „9600“ } void loop() { val=analogRead(potpin); // Liest den Analogwert des Sensors und dieser wird „Val“ zugewiesen Serial.
Lektion 12: Flammensensor Der Flammensensor (Infrarotempfangende Triode) wird speziell auf Robotern verwendet um Flammenquellen zu finden. Dieser Sensor hat eine hohe Sensitivität zu Flammen. Der Flammensensor ist nach dem Prinzip gebaut, dass Infrarotstrahlung sehr empfindlich auf Feuer reagiert. Er hat ein speziell entworfenes Infrarot-Aufnahmerohr um Feuer zu entdecken, um dann die Helligkeit der Flamme zu einem Signal umzuwandeln.
int flame=0; // Wählt analogen Pin 0 für Sensor aus int Beep=9; // Wählt digitalen Pin 9 für Summer aus int val=0; // Initialisiert Variable void setup() { pinMode(Beep,OUTPUT); // Stellt Summer Pin als „Ausgang“ ein pinMode(flame,INPUT); // Stellt Sensor Pin als „Eingang“ ein Serial.begin(9600); // Setzt Baudrate auf „9600“ } void loop() { val=analogRead(flame); // Liest den Analogwert des Sensors Serial.println(val); // Gibt den Analogwert aus if(val>=10) { // Summer summt, wenn Analogwert über 10 //ggf.
Lektion 13: Tilt-Sensor In dieser Lektion fungiert der Tilt-Sensor als ein Ein- und Ausschalter einer LED. Die LED ist dann eingeschaltet, wenn ein Ende vom Sensor unterhalb der horizontalen Position ist. Mittels der analogen Schnittstelle, an welcher der Tilt-Sensor angeschlossen ist, kann geprüft werden in welcher Lage sich der Sensor befindet.
10 kΩ 220 Ω void setup() { pinMode(8,OUTPUT); // Stellt digitalen Pin 8 als „Ausgang“ ein } void loop() { int i; // Definiert Variable i while(1) { i=analogRead(5);// Liest den Spannungswert vom analogen Pin 5 if(i>512) { // Wenn groeßer als 512 (2.5V) digitalWrite(8,LOW); // Schalte LED ein } else { digitalWrite(8,HIGH); // Schalte LED aus } } } www.joy-it.net Pascalstr.
Lektion 14: 1-Ziffer LED Segment Anzeige LED Segment Anzeigen sind verbreitet für die Anzeige von numerischen Informationen. Sie werden oft bei Anzeigen von elektromagnetischen Öfen, vollautomatischen Waschmaschinen, Wassertemperaturdisplays, elektronischen Uhren etc. verwendet. Die LED Segment Anzeige ist ein Halbleiter und ein Licht ausgebendes Gerät. Seine Basiseinheit ist eine LED.
www.joy-it.net Pascalstr.
// Stelle den IO Pin für jedes Segment ein int a=7; // Stellt digitalen Pin 7 für Segment a ein int b=6; // Stellt digitalen Pin 6 für Segment b ein int c=5; // Stellt digitalen Pin 5 für Segment c ein int d=10; // Stellt digitalen Pin 10 für Segment d ein int e=11; // Stellt digitalen Pin 11 für Segment e ein int f=8; // Stellt digitalen Pin 8 für Segment f ein int g=9; // Stellt digitalen Pin 9 für Segment g ein int dp=4; // Stellt digitalen Pin 4 für Segment dp ein void digital_0(void) { // Zeigt Nummer
void digital_3(void) { // Zeigt Nummer 3 an digitalWrite(g,HIGH); digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW); } void digital_4(void) { // Zeigt Nummer 4 an digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW); } void digital_5(void) { // Zeigt Nummer 5 an unsigned char j; digitalWrite
void digital_7(void) { // Zeigt Nummer 7 an unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); for(j=8;j<=11;j++) digitalWrite(j,LOW); } void digital_8(void) { // Zeigt Nummer 8 an unsigned char j; for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); } void digital_9(void) { // Zeigt Nummer 5 an unsigned char j; digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digita
delay(1000); digital_5(); delay(1000); digital_6(); delay(1000); digital_7(); delay(1000); digital_8(); delay(1000); digital_9(); delay(1000); // // // // // // // // // // // Wartet 1 Sekunde Zeigt Nummer 5 an Wartet 1 Sekunde Zeigt Nummer 6 an Wartet 1 Sekunde Zeigt Nummer 7 an Wartet 1 Sekunde Zeigt Nummer 8 an Wartet 1 Sekunde Zeigt Nummer 9 an Wartet 1 Sekunde } } Lektion 15: 4-Ziffern LED Segment-Anzeige In diesem Projekt wird eine 4-Ziffern 7-Segment-Anzeige betrieben.
// PIN für Anode int a = 1; int b = 2; int c = 3; int d = 4; int e = 5; int f = 6; int g = 7; int dp = 8; // PIN int d4 int d3 int d2 int d1 für Kathode = 9; = 10; = 11; = 12; // Stellt Variable ein long n = 1230; int x = 100; int del = 55; www.joy-it.net Pascalstr.
void setup() { pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(dp, OUTPUT); } void loop() { Display(1, Display(2, Display(3, Display(4, } 1); 2); 3); 4); void position(unsigned char n){ switch(n) { case 1: digitalWrite(d1,LOW); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); break; case 2: digitalWrit
case 4: digitalWrite(d1, digitalWrite(d2, digitalWrite(d3, digitalWrite(d4, break; default : digitalWrite(d1, digitalWrite(d2, digitalWrite(d3, digitalWrite(d4, break; HIGH); HIGH); HIGH); LOW); HIGH); HIGH); HIGH); HIGH); } } void Num_0() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); digitalWrite(dp,LOW); } void Num_1() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH);
void Num_3() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp,LOW); } void Num_4() { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); } void Num_5() { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrit
void Num_7() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp,LOW); } void Num_8() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); } void Num_9() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWr
void pickNumber(unsigned char n) { // Wählt Nummer switch(n) { case 0: Num_0(); break; case 1: Num_1(); break; case 2: Num_2(); break; case 3: Num_3(); break; case 4: Num_4(); break; case 5: Num_5(); break; case 6: Num_6(); break; case 7: Num_7(); break; case 8: Num_8(); break; case 9: Num_9(); break; default: Clear(); break; } } void Display(unsigned char x, unsigned char Number) { position(x); pickNumber(Number); delay(1); Clear() ; // Leert den Bildschirm } www.joy-it.net Pascalstr.
Wir der obiger Code vollständig auf den Mega2560 übertragen, so gibt die Anzeige 1234 aus. Lektion 16: LM35 Temperatursensor Der LM35 ist ein verbreiteter und einfach zu verwendender Temperatursensor. Man braucht keine sonstige Hardware. Die einzige Schwierigkeit besteht darin, den Code zu schreiben, welcher dafür sorgt, dass die Analogwerte , die er liest, in Celsius umgerechnet werden. Man benötigt: 1x Mega2560 Platine 1x USB-Kabel 1x LM35 1x Breadboard 5x Überbrückungskabel www.joy-it.
int potPin = 0; // Initialisiert Port A0 für Sensor void setup() { Serial.begin(9600); // Stellt die Baudrate auf „9600“ } void loop() { int val; // Definiert Variable int dat; // Definiert Variable val=analogRead(0); // Liest den Analogwert vom Sensor dat=(125*val)>>8; // Temperaturkalkulationsformel Serial.print("Temp:"); // Ausgabe beginnt mit Temp Serial.print(dat); // Ausgang und Anzeigewert von dat Serial.
Lektion 17: 74HC595 Schieberegister Das 74HC595 ist eine Kombination aus einem 8-Ziffern Schieberegister und Merker. Es ist ausgestattet mit einem Tri-State Ausgang. In diesem Projekt wird der 74HC595 verwendet um 8 LEDs ressourcensparend zu verwenden. Die benötigten I/O Ports reduzieren sich von 8 auf 3 Ports. Man benötigt: 1x Mega2560 Platine 1x USB-Kabel 4x Rote M5 LED 8x 220 Ω Widerstand 1x Breadboard 24x Überbrückungskabel 4x Grüne M5 LED 1x 75HC595 Chip www.joy-it.net Pascalstr.
int data = 2; // Stellt Pin 14 des 74HC595 als Dateneingang int clock = 5; // Stellt Pin 11 des 74HC595 als Tackt Pin int latch = 4; // Stellt Pin 12 des 74HC595 als Ausgang int ledState = 0; const int ON = HIGH; const int OFF = LOW; void setup() { pinMode(data, OUTPUT); pinMode(clock, OUTPUT); pinMode(latch, OUTPUT); } void loop() { for(int i = 0; i < 256; i++) { updateLEDs(i); delay(500); } } www.joy-it.net Pascalstr.
void updateLEDs(int value) { digitalWrite(latch, LOW); shiftOut(data, clock, MSBFIRST, ~value); digitalWrite(latch, HIGH); // Verriegeln } Lektion 18: RGB-LED Diese Diode wird durch PWM Signale gesteuert und besitzt ein dreifarbiges System um Farben darzustellen. Das Bauteil kann direkt an die Mega2560 Schnittstellen angeschlossen werden. Man benötigt: 1x Mega2560 Platine 1x USB-Kabel 1x RGB-LED 1x Breadboard 5x Überbrückungskabel 3x 220 Ω Widerstand www.joy-it.net Pascalstr.
int int int int redpin = 11; // Wählt Pin für rote LED aus bluepin =10; // Wählt Pin für blaue LED aus greenpin =9; // Wählt Pin für grüne LED aus val; void setup() { pinMode(redpin, OUTPUT); pinMode(bluepin, OUTPUT); pinMode(greenpin, OUTPUT); Serial.
Lektion 19: Infrarot-Fernbedienung Der IR-Empfänger wandelt das ankommende Lichtsignal in ein schwaches, elektrisches Signal um. Um den Code einer Fernbedienung zu dekodieren, ist es nötig die Kodierungsmethode zu kennen. In diesem Projekt wird dafür das NEC-Protokoll verwendet. Hierzu benötigen Sie: 1x Mega2560 Platine 1x USB-Kabel 6x M5 LED 6x 220 Ω Widerstand 1x Breadboard 11x Überbrückungskabel 1x Infrarot-Empfänger 1x Infrarot-Fernbedienung www.joy-it.net Pascalstr.
Der folgende Code benötigt die Bibliothek IRremote, welche sie in der Arduino IDE herunterladen können, unter Sketch → Bibliothek einbinden → Bibliothek verwalten… . Dort können Sie die mittels der Suchleiste diese Bibliothek finden und installieren. Starten Sie danach Ihre IDE neu. Der folgende Code wird mittels Infrarot ein Signal empfangen, entschlüsseln und im seriellen Monitor ausgeben.
long on2 = 0x00FF629D; long off2 = 0x00FFA857; long on3 = 0x00FFE21D; long off3 = 0x00FF906F; long on4 = 0x00FF22DD; long off4 = 0x00FF6897; long on5 = 0x00FF02FD; long off5 = 0x00FF9867; long on6 = 0x00FFC23D; long off6 = 0x00FFB04F; IRrecv irrecv(RECV_PIN); decode_results results; void dump(decode_results *results) { int count = results->rawlen; if (results->decode_type == UNKNOWN){ Serial.println("Could not decode message"); } else { if (results->decode_type == NEC){ Serial.
else if(results->value == 0xFFC23D) Serial.println("Button: >>"); else if(results->value == 0xFFE01F) Serial.println("Button: EQ"); else if(results->value == 0xFFA857) Serial.println("Button: -"); else if(results->value == 0xFF906F) Serial.println("Button: +"); else if(results->value == 0xFF6897) Serial.println("Button: 0"); else if(results->value == 0xFF9867) Serial.println("Button: Reload"); else if(results->value == 0xFFB04F) Serial.println("Button: U/SD"); else if(results->value == 0xFF30CF) Serial.
int on = 0; unsigned long last = millis(); void loop() { if (irrecv.decode(&results)){ if (millis() - last > 250){ on = !on; // digitalWrite(8, on ? HIGH : LOW); digitalWrite(13, on ? HIGH : LOW); dump(&results); } if (results.value == on1 ) digitalWrite(LED1, HIGH); if (results.value == off1 ) digitalWrite(LED1, LOW); if (results.value == on2 ) digitalWrite(LED2, HIGH); if (results.value == off2 ) digitalWrite(LED2, LOW); if (results.value == on3 ) digitalWrite(LED3, HIGH); if (results.
Lektion 20: 8x8 LED-Matrix Die 8 x 8 LED Matrix besteht aus 64 LEDs. Jede LED ist im Bereich des Schnittpunktes von Reihe und Spalte platziert. Wenn der Pegel für eine Reihe 1 ist und der Pegel der entsprechenden Spalte 0 ist, wird die LED in deren Schnittpunkt angehen. Beispiel: Wenn Sie die erste LED anschalten wollen, stellen Sie Pin9 auf "HIGHPEGEL" und Pin 13 auf "LOWPEGEL" ein.
Achten Sie darauf das die LED-Matrix richtig angeschlossen ist. Unter der Matrix befindet sich eine Auswölbung (Abbildung) an welcher Sie sich orientieren können.
void setup(){ int i = 0 ; for(i=2;i<18;i++) { pinMode(i, OUTPUT); } clear_(); } void loop() { show_num(); } void clear_(void) { // Leert Bildschirm for(int i=2;i<10;i++) digitalWrite(i, LOW); for(int i=0;i<8;i++) digitalWrite(i+10, HIGH); } www.joy-it.net Pascalstr.
6. SONSTIGE INFORMATIONEN PR Unsere Informations- und Rücknahmepflichten nach dem Elektrogesetz (ElektroG) Symbol auf Elektro- und Elektronikgeräten: Diese durchgestrichene Mülltonne bedeutet, dass Elektro- und Elektronikgeräte nicht in den Hausmüll gehören. Sie müssen die Altgeräte an einer Erfassungsstelle abgeben. Vor der Abgabe haben Sie Altbatterien und Altakkumulatoren, die nicht vom Altgerät umschlossen sind, von diesem zu trennen.