Mit dem "open smart rich shield", kannst du für circa 6 Euro eine Menge über den Arduino und das Programmieren mit Ardublock lernen. Dieses shield bietet eine 4x Siebensegment Anzeige, zwei Taster, 4 LEDs, einem Poti, DHT Sensor und vieles andere. Mit so einem Board musst du dich nicht um das Stecken von Hardware auf einem Breadbord kümmern, sondern kannst direkt mit dem programmieren loslegen.
Spezifikationen des open smart rich shield
- Geeignet für Uno, Mega, Leonardo und andere 5-V-Arduinos, die das Uno R3-Pinlayout verwenden
- Verfügbare Hardware mit entsprechender PIN Belegung:
- IR-Empfänger: D2
- Summer: D3
- LED4 (rot): D4
- LED3 (grün): D5
- LED2 (blau): D6
- LED1 (gelb): D7
- Druckknopf K2 auf D8
- Druckknopf K1 auf D9
- TM1637 Segmentanzeige mit 4 Zeichen und Dezimalstellen: D10 CLK, D11 DIN
- DHT11-Sensor: D12
- Potentiometer: A0
- NTC (Temperatursensor): A1
- LDR (Lichtsensor): A2
- Spannungssensor (Spannungsteiler): A3
- 24C02 EEPROM: I2C-Pins (Standard-SCK- und SDA-Pins)
4x7 LED Segmentanzeige programmieren:
Mit der LED Anzeige des "open smart rich shield" kannst du einfache Zahlen aber auch Variablen und Kommastellen anzeigen. Um das Display zu programmieren benötigst du lediglich die "TM1637.h" und die "Arduino.H" Bibliothek für den Arduino. Die ersten 5 Code Funktionen werden über "Code im Globalen Bereich einfügen" programmiert. Über die Funktion "setBrightness" wird die Helligkeit der Anzeige bestimmt.
Einfache Zahlen werden mit der Funktion "showNumerDec" dargestellt.
- Anzuzeigender Wert: display.showNumberDec(99, true);
- Bestimmt ob die leeren stellen mit 0 gefüllt werden: display.showNumberDec(99, true/false);
- In einer extra Klammer wird eine Variable angezeigt: display.showNumberDec((var), true);
Um jede Anzeige Extra darzustellen wird die Funktion data[0] = display.encodeDigit verwendet.
- Erste Zahl ist die Stelle, zweite Zahl ist der Wert: data[0] = display.encodeDigit(7);
- Um eine Variable anzuzeigen, den Name in die Klammer schreiben: data[0] = display.encodeDigit(var);
- Das unit8 und set Segments nicht vergessen.
Um die Helligkeit der Anzeige zu ändern oder ganze auszuschalten wird die Funktion: display.setBrightness(7, true); verwendet
- Die Zahl gibt die Helligkeit von 0-7 an display.setBrightness(7, true);
- True und false geben an ob das Display aus oder an ist: display.setBrightness(7, true/false);
- Im Bespiele wird die Anzeige für eine Sekunde Ein- und dann für eine Sekunde ausgeschaltet.
Code im globalen Bereich einfügen:
#include <Arduino.h>
#include <TM1637Display.h>
#define CLK 10
#define DIO 11
TM1637Display display(CLK, DIO);
Code im Setup einfügen:
display.setBrightness(5, true);
Code im Loop einfügen:
display.showNumberDecEx(34, (0x80 >> 3), true);
display.showNumberDec(99, true);
display.showNumberDec((var), false);
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
data[0] = display.encodeDigit(var1);
data[1] = display.encodeDigit(var2);
data[2] = display.encodeDigit(var3);
data[3] = display.encodeDigit(var4);
display.setSegments(data);
data[0] = display.encodeDigit(0);
display.showNumberDecEx((variable), (0x80 >> punkt), true); (Varaible Punkt = Punkt auf dem Display)
Hier noch einige Beispiele für showNummerDec:
display.showNumberDec(0, false); // Expect: ___0
display.showNumberDec(0, true); // Expect: 0000
display.showNumberDec(1, false); // Expect: ___1
display.showNumberDec(1, true); // Expect: 0001
display.showNumberDec(301, false); // Expect: _301
display.showNumberDec(301, true); // Expect: 0301
display.showNumberDec(14, false, 2, 1); // Expect: _14_
display.showNumberDec(4, true, 2, 2); // Expect: __04
display.showNumberDec(-1, false); // Expect: __-1
display.showNumberDec(-12); // Expect: _-12
display.showNumberDec(-999); // Expect: -999
display.showNumberDec(-5, false, 3, 0); // Expect: _-5_
display.showNumberHexEx(0xf1af); // Expect: f1Af
display.showNumberHexEx(0x2c); // Expect: __2C
display.showNumberHexEx(0xd1, 0, true); // Expect: 00d1
display.showNumberHexEx(0xd1, 0, true, 2); // Expect: d1__
IR LED als Empfänger programmieren:
Die Fernbedienung sollte auf den IR Empfänger gerichtet sein, damit das Signal auch ankommt.
Die irremote Bibliothek muss auf Version 2.6.0 stehen, sonst funktioniert das auslesen nicht.
Code im globalen Bereich einfügen:
#include <IRremote.h>
#define RECEIVER_PIN 2
IRrecv receiver(RECEIVER_PIN);
decode_results results;
Code im Setup einfügen:
receiver.enableIRIn();
receiver.enableIRIn();
Code im Loop einfügen:
{ if (receiver.decode(&results)) { Serial.println(results.value, HEX); receiver.resume(); } }
test = (long)results.value;
Nach dem drücken eines Knopfes sollten diese Zeile im Serial Monitor erscheinen.
Hier der Code zum auslesen der HEX Daten.
#include <IRremote.h>
const int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop(){
if (irrecv.decode(&results)){
Serial.print(" HEX: ");
Serial.print(results.value, HEX);
Serial.print(" BIN: ");
Serial.println(results.value, BIN);
irrecv.resume();
}
}