Mein Uhrensetzgerät ist ja nun mittlerweile gut bekannt und die Nachfrage reißt einfach nicht ab.
Mir fehlt die Zeit und die Kraft weiterhin welche zu bauen. Leider werden noch immer teils hoffnungslos teuere und oft defekte Kopien meines Gerätes vertickt.
Ich habe sehr viel Zeit, Arbeit und auch Geld investiert, um mein kleines dämliches Uhrensetzgerät zu bauen.
Den Abzockern möchte ich immernoch das Wasser abgraben. Und wie macht man diesem Abschaum das Geschäft kaputt? Richtig! Man flutet den Markt!
Ich habe lange darüber nachgedacht, ob ich diesen Schritt machen soll. Allerdings habe ich nun das Projekt aus Frust und Wut komplett aufgegeben und werde es in DIESER Form nicht mehr weiter entwickeln!
Also, wer von euch in der Lage ist, 4 Komponeten zu bestellen und passend zusammen zu löten, der kann sich nun an ein eigenes Uhrensetzgerät bauen!
Ihr braucht:
1x Arduino UNO (muss kein "original" sein, die nun deutlich günstiger erhältlichen Nachbauten gehen auch! Wichtig nur: ATMEGA328P Prozessor!
1x LCD-KeyPad-Shield (ggf muss der Widerstandswert im Programm angepasst werden)
1x RS232<>TTL Converter
1x 5Pol-Diodenstecker
AnschlussplanUhrensetzgerät.png
Dann lötet ihr die Komponenten am KeyPad wie auf dem Bild zusammen. Verwendet nicht unnötig lange Leitungen! Je länger die Leitung, desto "matschiger" kann das Signal am Ende sein!
Ich weise hier NOCHMALS auf die Gefahr der 40V und 20V an der Auslesebuchse hin!!!
Ein durchgescheuertes Kabel im Automaten oder ein abgerissenes Kabel im Automaten am Stecker kann schnell mal die 40V dahin leiten, wo sie maximalen Schaden verursacht!
Als Batterie für das Uhrensetzgerät habe ich immer einen 9V-Block verwendet!
ACHTUNG: Ist die Spannug des 9V-Blocks unter 7V kann es schon sein, dass der Automat nur noch Matsch empfängt!
Das KeyPad steckt ihr nun passend auf den Arduino und verbindet diesen nun mit dem PC.
Startet das Arduino-Programiertool, welches kostenlos auf der Arduino-Homepage runter geladen werden kann!
Und nun die Katze aus dem Sack... mein Programm, welches ich lange geschützt hielt, da hier von mir eine Menge Arbeit und Zeit drinn steckt...
Kopiert es in den Arduino und am Ende habt ihr euer eigenes Uhrensetgerät!
ACHTUNG!!! Ich dulde es nicht, wenn ihr dieses Programm verkauft! Ihr könnt gerne zum selbstkostenpreis Uhrensetzgeräte für andere herstellen. Es ist nach wie vor mein geistiges Eigentum!
Für das Programm selbst jedoch, dürft ihr nichts verlangen!
/*
* Uhrensetzgerät V1.2
* ===================
* Copyright by: Riiko
* Das Programm darf weder verkauft noch irgendwo ausserhalb
* der Foren www.automatenfreunde.de oder www.geldspielfreunde.de veröffentlicht werden!
* Nieder mit den Abzockern!!!
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
byte symA[8] = {
B01010,B00000,B01110,B00001,B01111,B10001,B01111,};
byte symB[8] = {
B00000,B00000,B00001,B00010,B10100,B01000,B00000,};
byte symC[8] = {
B00100,B01110,B10101,B00100,B00100,B00100,B00000,};
byte symD[8] = {
B00100,B00100,B00100,B10101,B01110,B00100,B00000,};
byte symE[8] = {
B00000,B10000,B01000,B00100,B00010,B00001,B00000,};
byte symF[8] = {
B01010,B00000,B01110,B00001,B01111,B10001,B01111,};
byte symG[8] = {
B00100,B00110,B00101,B00101,B00100,B11100,B11100,};
byte symH[8] = {
B00110,B00101,B00111,B00101,B11101,B11011,B00011,};
int day = 1;
int month = 2;
int year = 16;
int hour = 12;
int minute = 0;
int speedset = 0;
int curpos = 1;
int counterA = 0;
int counterB = 0;
int KeypadPin = A0;
int KeypadValue = 0;
int keystate = 0;
int lastkey =0;
int mode = 0;
void setup() {
lcd.createChar(0, symA);
lcd.createChar(1, symB);
lcd.createChar(2, symC);
lcd.createChar(3, symD);
lcd.createChar(4, symE);
lcd.createChar(5, symF);
lcd.createChar(6, symG);
lcd.createChar(7, symH);
Serial.begin(4800, SERIAL_8N1);
lcd.begin(16,2);
lcd.print("<Alpha-Networks>");
lcd.setCursor(0,1);
lcd.print("Uhrensetzger\5t");
delay(2500);
lcd.setCursor(0,0);
lcd.print("Seriennummer: ");
lcd.setCursor(0,1);
lcd.print("Selbstgebaut ");
delay(2500);
lcd.setCursor(0,0);
lcd.print("TT.MM.JJ HH:MM");
lcd.setCursor(0,1);
lcd.print(" ============== ");
delay(1500);
lcd.setCursor(0,0);
lcd.print("01.02.16 12:00");
lcd.setCursor(0,1);
lcd.print("\2\3");
lcd.write(126);
lcd.print(" Tag");
}
void changeday() {
lcd.setCursor(0,1);
lcd.print("\2\3");
lcd.write(126);
lcd.print(" Tag");
if (keystate == 3) {day = day + 1; };
if (keystate == 4) {day = day - 1; };
if (day > 31) {day = 1; };
if (day < 1) {day = 31; };
lcd.setCursor(0,0);
if (day < 10) {lcd.print("0");};
lcd.print(day);
}
void changemonth() {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.write(127);
lcd.print("\2\3");
lcd.write(126);
lcd.print(" Monat");
if (keystate == 3) {month = month + 1; };
if (keystate == 4) {month = month - 1; };
if (month > 12) {month = 1; };
if (month < 1) {month = 12; };
lcd.setCursor(3,0);
if (month < 10) {lcd.print("0");};
lcd.print(month);
}
void changeyear() {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.write(127);
lcd.print("\2\3");
lcd.write(126);
lcd.print(" Jahr");
if (keystate == 3) {year = year + 1; };
if (keystate == 4) {year = year - 1; };
if (year > 99) {year = 0; };
if (year < 0) {year = 99; };
lcd.setCursor(6,0);
if (year < 10) {lcd.print("0");};
lcd.print(year);
}
void changehour() {
lcd.setCursor(0,1);
lcd.print("Stunde ");
lcd.write(127);
lcd.print("\2\3");
lcd.write(126);
lcd.print(" ");
if (keystate == 3) {hour = hour + 1; };
if (keystate == 4) {hour = hour - 1; };
if (hour > 23) {hour = 0; };
if (hour < 0) {hour = 23; };
lcd.setCursor(11,0);
if (hour < 10) {lcd.print("0");};
lcd.print(hour);
}
void changeminutes() {
lcd.setCursor(0,1);
lcd.print("Minute ");
lcd.write(127);
lcd.print("\2\3");
if (keystate == 3) {minute = minute + 1; };
if (keystate == 4) {minute = minute - 1; };
if (minute > 59) {minute = 0; };
if (minute < 0) {minute = 59; };
lcd.setCursor(14,0);
if (minute < 10) {lcd.print("0");};
lcd.print(minute);
}
void valchange() {
if (keystate == 5) { curpos = curpos +1; };
if (keystate == 2) { curpos = curpos -1; };
if (curpos <= 0) {curpos = 5;};
if (curpos >= 6) {curpos = 1;};
if (curpos <= 1 ) { changeday(); };
if (curpos == 2 ) { changemonth(); };
if (curpos == 3 ) { changeyear(); };
if (curpos == 4 ) { changehour(); };
if (curpos == 5 ) { changeminutes(); };
}
void preparesend() {
if (keystate == 5) {
curpos = 2;
lcd.setCursor(0,1);
lcd.print(" JA [NEIN]");
};
if (keystate == 2) {
curpos = 1;
lcd.setCursor(0,1);
lcd.print("[ JA ] NEIN ");
};
}
void loop() {
KeypadValue = analogRead(KeypadPin);
//lcd.setCursor(0,0);lcd.print(KeypadValue);lcd.print(" ");
if ((KeypadValue >= 0) & (KeypadValue < 100)) { keystate = 5; };
if ((KeypadValue >= 80) & (KeypadValue < 200)) { keystate = 3; };
if ((KeypadValue >= 200) & (KeypadValue < 400)) { keystate = 4; };
if ((KeypadValue >= 400) & (KeypadValue < 600)) { keystate = 2; };
if ((KeypadValue >= 600) & (KeypadValue < 900)) { keystate = 1; };
if (KeypadValue >= 900) { keystate = 0; };
if (mode == 2) {
curpos = curpos +1;
counterB = counterB + 1;
delay(100);
if (curpos >= 5) {curpos = 1;};
if (curpos == 1) { lcd.setCursor(14,0); lcd.print("|"); };
if (curpos == 2) { lcd.setCursor(14,0); lcd.print("/"); };
if (curpos == 3) { lcd.setCursor(14,0); lcd.print("-"); };
if (curpos == 4) { lcd.setCursor(14,0); lcd.print("\4"); };
if (counterB == 8) {
Serial.print("**ZEIT*:");delay(1);
if (hour < 10) {Serial.print("0");delay(1);}; Serial.print(hour);delay(1);
if (minute < 10) {Serial.print("0");delay(1);}; Serial.print(minute);delay(1);
if (day < 10) {Serial.print("0");delay(1);}; Serial.print(day);delay(1);
if (month < 10) {Serial.print("0");delay(1);}; Serial.print(month);delay(1);
if (year < 10) {Serial.print("0");delay(1);}; Serial.print(year);delay(1);
Serial.print("00");delay(1);
Serial.print("00");delay(1);
Serial.print("\r");
delay(50);
lcd.setCursor(14,0); lcd.print("\1");
lcd.setCursor(0,1); lcd.print("Abgeschlossen!\6\7");
delay(2500);
counterB = 0; keystate = 0; mode = 0; curpos = 1;
lcd.setCursor(0,0); if (day < 10) {lcd.print("0");}; lcd.print(day); lcd.print("."); if (month < 10) {lcd.print("0");}; lcd.print(month); lcd.print("."); if (year < 10) {lcd.print("0");}; lcd.print(year); lcd.print(" "); if (hour < 10) {lcd.print("0");}; lcd.print(hour); lcd.print(":"); if (minute < 10) {lcd.print("0");}; lcd.print(minute); lcd.setCursor(0,1); lcd.print("\2\3"); lcd.write(126); lcd.print(" Tag");
};
};
if (keystate != lastkey) {
lastkey = keystate;
counterA = 0;
speedset = 0;
if (mode == 1) {
if (keystate != 1) {preparesend();};
if ((keystate == 1)&& (curpos == 2)){
keystate = 0; mode = 0; curpos = 1;
lcd.setCursor(0,0); if (day < 10) {lcd.print("0");}; lcd.print(day); lcd.print("."); if (month < 10) {lcd.print("0");}; lcd.print(month); lcd.print("."); if (year < 10) {lcd.print("0");}; lcd.print(year); lcd.print(" "); if (hour < 10) {lcd.print("0");}; lcd.print(hour); lcd.print(":"); if (minute < 10) {lcd.print("0");}; lcd.print(minute); lcd.setCursor(0,1); lcd.print("\2\3"); lcd.write(126); lcd.print(" Tag"); };
if ((keystate == 1)&& (curpos == 1)){
keystate = 0; mode = 2; curpos = 1;
lcd.setCursor(0,0); lcd.print("Sende Daten...| ");
lcd.setCursor(0,1); lcd.print(" ");
};
};
if (mode == 0) {
if (keystate != 1) {valchange();};
if (keystate == 1) {
mode = 1;
curpos = 2 ;
lcd.setCursor(0,0);
lcd.print("Daten senden? ");
lcd.setCursor(0,1);
lcd.print(" JA [NEIN]");
};
};
};
counterA = counterA + 1;
if (keystate != 0) {
if (counterA > 50) { if (speedset < 1) { counterA = 0; speedset = speedset + 1; valchange(); }; };
if (counterA > 10) { if ((speedset >= 1 ) && (speedset < 8)) { counterA = 0; speedset = speedset + 1; valchange(); }; };
if (counterA > 5) { if ((speedset >= 8) && (speedset < 16)) { counterA = 0; speedset = speedset + 1; valchange(); }; };
if (counterA > 1) { if (speedset >= 16){ counterA = 0; speedset = speedset + 1; valchange(); }; };
};
delay(20);
}
Alles anzeigen
Wer mir was Gutes tun möchte oder ein kleines finanzielles Danke da lassen möchte, kann mir gerne was über PayPal schicken: riiko@automatenfreunde.de
Viel Erfolg beim bauen und Leute, bleibt fair!