Category Archives: Hardware

LCD an Arduino anschließen

By | 12. April 2014

20140412_183737[1][1]-1130487925[1]

Hier zeige ich, wie man ein handelsübliches 16×2 Display an den Arduino Uno anschließt.

LCD RS an Arduino Digital 12
LCD RW an Arduino Digital 11
LCD E an Arduino Digital 10
LCD D4 an Arduino Digital 6
LCD D5 an Arduino Digital 5
LCD D6 an Arduino Digital 4
LCD D7 an Arduino Digital 3
An VS0 einen 10k Poti für den Kontrast und an A einen Vorwiderstand für die Hintergrundbeleuchtung. Ich habe 1k Ohm genommen.

Alles nochmal als Bild:

untitled-sketch_steckplatine[1][1]-924494788[1]

Jetzt fehlt nur noch der Arduino-Sketch:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 6, 5, 4, 3); //Hier die Ports angeben an denen das Display angeschlossen wurde
  
void setup()
{
 lcd.begin(16, 2); //Art des Displays
 lcd.print("This is a test!");
}
  
void loop()
{
 lcd.setCursor(0, 1);
 lcd.print("1234567890");
}

LED-Matrix 29×8

By | 9. April 2014

Nach langen Stunden des Lötens und Programmierens ist die Matrix hardwaremäßig endlich fertig. An der Software werde ich noch ein bisschen basteln.

Einkaufsliste:

1 x Lochrasterplatine 229 x 127 mm
232 x LED 5mm
29 x Widerstand 150 Ohm
8 x Widerstand 1k Ohm
10 x Keramikkondensator 100 nF
2 x Keramikkondensator 22 pF
1 x Quarz 16 Mhz
1 x Attiny 85
5 x Schieberegister 74HC595
4 x LED-Treiber ULN2803 50V 0,5A
8 x Transistor NPN 2N2222A 40V 0,8A
Schaltlitze

Schaltplan:

matrix[2][1]-440129058[1]

Programm:

#include <digitalWriteFastTiny.h>
 
byte i = 0;
byte j = 0;
byte k = 0;
 
#define dataPin 2
#define shiftPin 1
#define storePin 0
 
boolean leds[8][37] = {
  {true, true, true, true, true,       false,   false, false, false, false, false,  false,   false, false, false, false, false,  false,   false, true, false, false, false,   false,   false, false, true, false, false,     true, false, false, false, false, false, false, false},
  {false, false, true, false, false,   false,   false, false, false, false, false,  false,   false, false, false, false, false,  false,   false, true, false, false, false,   false,   false, false, true, false, false,     false, true, false, false, false, false, false, false},
  {false, false, true, false, false,   false,   false, true, true, true, false,     false,   false, true, true, true, false,     false,   true, true, true, false, false,      false,   false, false, true, false, false,     false, false, true, false, false, false, false, false},
  {false, false, true, false, false,   false,   true, false, false, false, true,    false,   true, false, false, false, false,   false,   false, true, false, false, false,    false,   false, false, true, false, false,     false, false, false, true, false, false, false, false},
  {false, false, true, false, false,   false,   true, true, true, true, true,       false,   false, true, true, true, false,     false,   false, true, false, false, false,      false,   false, false, false, false, false,    false, false, false, false, true, false, false, false},
  {false, false, true, false, false,   false,   true, false, false, false, false,   false,   false, false, false, false, true,   false,   false, true, false, false, true,    false,   false, false, false, false, false,    false, false, false, false, false, true, false, false},
  {false, false, true, false, false,   false,   false, true, true, true, false,     false,   true, true, true, true, false,      false,   false, false, true, true, false,       false,   false, false, true, false, false,     false, false, false, false, false, false, true, false},
  {false, false, false, false, false,  false,   false, false, false, false, false,  false,   false, false, false, false, false,  false,   false, false, false, false, false,   false,   false, false, false, false, false,    false, false, false, false, false, false, false, true}
};
 
void setup() {
  pinMode(dataPin, OUTPUT);
  digitalWrite(dataPin, LOW);
  pinMode(shiftPin, OUTPUT);
  digitalWrite(shiftPin, LOW);
  pinMode(storePin, OUTPUT);
  digitalWrite(storePin, LOW);
   
  delay(2000);
}
 
void loop() {
  for(k=1; k<=8; k++){
    writeLineToMatrix(leds[k-1], k);
    //delay(1);
  }
 
   
}
 
void writeLineToMatrix(boolean line[], byte row){
  digitalWriteFast(storePin, LOW);
  for(i=0; i<37; i++){
    digitalWriteFast(dataPin, line[i]);
    digitalWriteFast(shiftPin, HIGH);
    digitalWriteFast(shiftPin, LOW);
  }
  digitalWriteFast(dataPin, LOW);
  digitalWriteFast(storePin, HIGH);
  delayMicroseconds(1000);
}

digitalWriteFast Library

Bilder:

20140409_143040[1][1]-884303104[1]
20140409_143340[1][1]-1245425812[1]
20140409_143353[1][1]-1173950024[1]

LED-Matrix Entwürfe

By | 15. März 2014

Die LEDs müssen weg, also weiter zum nächsten Vorhaben. Die Matrix soll eine Größe von 29×8 Pixel haben. Das Layout der Vorderseite steht schon fest:

matrix3[1][1]-922128040[1]

Und der Schaltplan (vorläufige Version):

matrix4[1][1]-1347152943[1]

Nach jetziger Planung werden Matrix und Steuerung auf zwei getrennten Platinen umgesetzt und per Flachbandkabel verbunden. Die LEDs sind auf die Platine gelötet. Nach ein paar Tests auf dem Breadboard werden diese fest verdrahtet.

20140328_174959-178323701[1]

Weiteres in den nächsten Tagen…

Binäruhr

By | 9. Februar 2014

Während ich immer noch auf die Box für den LED Cube warte, habe ich mal aus Langeweile eine Binäruhr gebastelt. Auf der Rückseite befinden sich drei Taster. Zwei davon dienen zum Umstellen der Minuten und Stunden. Mit dem dritten Taster kann man die LEDs ein- und ausschalten. Für den Batteriebetrieb kann dies sehr nützlich sein, wenn man nicht jeden Tag die Batterien wechseln möchte.

Kommen wir zur Einkaufsliste:

Schaltplan:

Binary-Clock[1]

Der Plan ist spiegelverkehrt, um die Lötarbeit zu erleichtern.

Jetzt fehlt nur noch der Code für den Arduino bzw. Attiny:

Download
binary_clock.ino | 3 kB

LED Cube 4x4x4

By | 2. Februar 2014

Zwischen den Programmierprojekten hatte ich mal Lust auf einen LED-Würfel. Für den Anfang ist ein 4x4x4-Würfel ideal, um sich mal mit der Materie zu beschäftigen. Später kann man dann die Größe auf 8x8x8 erhöhen.

Leider muss ich noch ein paar Tage warten, bis die restlichen Bauteile geliefert werden, um mein “Werk” zu vollenden. Sobald alles fertig ist, werde ich ein Video hochladen. Auch eine Liste mit den verwendeten Bauteilen und dem Link zum verwendeten Tutorial wird in ein paar Tagen hier veröffentlicht.

Update 12.02.2014: Alle restlichen Teile sind angekommen und eingebaut. Der Würfel ist endlich fertig! Hier das finale Video: