Monatsarchiv: November 2012

Arduino Kommunikation mit einem SNES Controller

Nachdem im Buch von der Steuerung des Arduino Boards mit Hilfe eines WII Nunchuk die Rede war, habe ich mal ein wenig die Foren nach anderen Arduino-kompatiblen Controllern durchsucht.
Sehr erfreut war ich, dass der gute, alte SNES Controller sogar eine Arduino Libary besaß. :D
Die Libary und auch eine kurze Anleitung zur Schaltung kann auf der Seite des Programmierers eingesehen werden.
Leider ist die Libary nicht mehr auf dem neusten Stand der Arduino IDE (1.0.1), weswegen sie leicht abgeändert werden muss. Danach funktioniert sie jedoch super :D

Hier mal der angeschlossene Controller: (eine Schaltungsskizze folgt noch)

 

Nachdem man die SNESpad installiert hat (Anleitung siehe hier) kann man in der Arduino IDE Beispiele unter „SNES“ öffnen.

Hier mal ein Programmbeispiel:

#include <SNESpad.h>
//——————————-
SNESpad nintendo = SNESpad(10,9,8);
//——————————-
int state = 0;
//——————————-
void setup()
{Serial.begin(57600);}
void loop() {
state = nintendo.buttons();
Serial.println(~state, BIN);
delay(500); //Reaktion der Knöpfe
}

Dieses Programm gibt im Serial Monitor auf dem Controller gedrückte Tasten in Form von Nullen und Einsen wieder. Mit der Einstellung des delay() lässt sich die Reaktionsgeschwindigkeit des Boards einstellen.
Echt eine coole Sache :D Hab schon ein paar Ideen, was man so machen könnte :)

 


LCD – Eigene Zeichen / charachters erstellen

Eine echt Tolle Libary stellt  arduino.cc zur Verfügung, mit der man eine Menge mit dem LC Display anstellen kann.

Ich habe mich zunächst einmal mit der createChar() Methode befasst, welche ganz interessant klang.

Mit dieser Methode ist es möglich eigene Zeichen zu erstellen und diese auf dem Display auszugeben.

Hier schon einmal vorweg das Ergebnis:

So wird es gemacht:

Zunächst einmal die Vorarbeit, die geleistet werden muss

  • Zeichen entwerfen (5×8 Pixel)

  • Nun kann man den Code schreiben:

die Zeichen werden in einem Array mit 8 Elementen in Form von Byte’s gespeichert.

Hier das Beispiel gezeigt am Zeichen des Sterns:

Eine Eins seht dafür, dass das Pixel an dieser Stelle schwarz wird.

———-byte star———-

byte star[8] = {
B00000,
B00100,
B00100,
B11111,
B01110,
B01010,
B10001,
B00000
};

——————————

Ein kleines Rubyscript für das Erstellen der Zeichen hier <—–

——————————

Hier der komplette Code:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char a = 0;
char b = 1;
char c = 2;
char d = 3;
byte smiley[8] = {
B00000,
B01010,
B01010,
B00000,
B11111,
B10001,
B01110,
B00000
};
byte star[8] = {
B00000,
B00100,
B00100,
B11111,
B01110,
B01010,
B10001,
B00000
};
byte heart[8] = {
B00000,
B01010,
B11111,
B01110,
B00100,
B00000,
B00000,
B00000

};
byte cross[8] = {
B00100,
B00100,
B11111,
B00100,
B00100,
B00100,
B00100,
B00100
};
void setup() {
lcd.createChar(a, smiley);
lcd.createChar(b, star);
lcd.createChar(c, heart);
lcd.createChar(d, cross);
lcd.setCursor(0, 0);
lcd.write(a);
lcd.print(“  „);
lcd.write(b);
lcd.print(“  „);
lcd.write(c);
lcd.print(“  „);
lcd.write(d);
}
void loop() {}

——————————

Die Schaltung des Displays ist gleich geblieben. (Siehe hier)


Liquid Crystal Display

Heute ist endlich das Paket von Reichelt angekommen :) Juhu
Nadine und ich haben uns vor einiger Zeit LCDisplays zugelegt, die jedoch einen Potentiometer* benötigen, welches wir leider nicht mit bestellt haben :P Nachdem wir nun unsere Bauteile haben kann es endlich weitergehen :D

Noch vielen Dank für das Verlöten des Displays an Max! :D

 

CODE:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
    lcd.begin(16, 2);
    lcd.print(„arduinokevin.“);
}

void loop() {
    lcd.setCursor(0, 1);
    lcd.print(„wordpress.com“);
}

Hier die Schaltung:

Die Anleitung für das Ansteuern des LC Displays kann man hier finden.

*Das Potentiometer wird für die Einstellung des Kontrasts des Displays benötigt.