Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #30 on: March 26, 2012, 02:09:05 pm » |
Ok, jetzt sehe ich ein wenig klarer. Was genau steht denn nun in now nach byte now[6]; getDate(now);
drin? So wie ich das sehe, ist das in now[0] z. B. das Jahr - allerdings nicht als char, sondern als byte. Du musst das nun wirklich in einen String umwandeln, der auch nullterminiert sein muss. Ich würde mal folgendes versuchen: byte now[6]; char temp[3];
getDate(now); // Ausgabe Jahr lcdTime((int) now[0], temp); glcd.drawString(13, 44, temp); // Ausgabe Monat
lcdTime((int) now[1], temp); glcd.drawString(.., .., temp);
// etc.
void lcdTime(int intWert, char charWert[3]){ Serial.println(intWert); itoa (intWert, charWert, 10); Serial.println(charWert); return charWert; }
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #31 on: March 26, 2012, 02:20:34 pm » |
Hmm, klappt leider nicht. Folgende Meldung beim compilieren: HeimKlima.cpp: In function 'void lcdTime(int, char*)': LCD:22: error: return-statement with a value, in function returning 'void' Ok habs raus bekommen! char* lcdTime(int intWert, char charWert[3]){ Serial.println(intWert); itoa (intWert, charWert, 10); Serial.println(charWert); return charWert; } da stand noch VOID. Und es geht nun. Damit kann ich weiter arbeiten. Ich muss sicher noch schauen was passiert wenn die Zahlen nur einstellig sind. Mal schauen jetzt ist erstmal Schluss für Heute. DANKE, Du hast mich ein ganzes Stück weiter gebracht
|
|
|
|
« Last Edit: March 26, 2012, 02:24:04 pm by MueThoS »
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #32 on: March 27, 2012, 06:19:33 am » |
Sorry, war gestern schon ein bisschen unkonzentriert und habe das "return"-Statement übersehen;-) Das muss natürlich richtig lauten: void lcdTime(int intWert, char charWert[3]){ Serial.println(intWert); itoa (intWert, charWert, 10); Serial.println(charWert); }
Rudi
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #33 on: March 27, 2012, 06:23:58 am » |
Oder so, das return drinne lassen und anstatt void lcdTime char* lcdTime schreiben ging auch Was ist besser oder richtiger?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #34 on: March 27, 2012, 07:33:53 am » |
Mir gefällt die Variante mit void besser. Ich finde es keinen besonders guten Stil, wenn man einen Parameter hat und den dann auch noch als return-Wert benutzt. Ich würde entweder nur einen return-Wert nehmen (dann musst du dich aber um die Speicherallokation und -freigabe kümmern) oder die Variante mit dem Wert als Parameter, aber nicht einen Mischmasch.
Das sehen aber andere Leute vielleicht wieder ganz anders;-)
Rudi
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #35 on: March 28, 2012, 12:01:41 pm » |
Habs so gemacht wie du es gesagt hast! Und hab gleich die nächste Frage: kann ich bei einem switch/case auch ich sage mal Bereiche definieren? Ich mache ja normal sowas: switch(test){ case 1 ... break; case 2 ... break; case X ... break; } Kann ich auch irgendwie sowas machen: switch(test){ case 1 ... break; case 2 ... break; case 3-10 <----- wenn test 3 bis 10 sein sollte ... break; }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #36 on: March 28, 2012, 03:35:09 pm » |
Nee, Bereiche gehen nur, wenn du if-Statements verwendest. Allerdings kannst du durch die einzelnen Bedingungen "durchfallen", d. h. du verwendest dort kein break-Statement: switch(test){ case 1 ... break; case 2 ... break;
case 3: case 4: case 5: case 5: case 6: case 7: case 8: case 9: case 10: // code break;
}
Funktioniert soweit ganz gut - aber schön ist was anderes;-) Rudi
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #37 on: March 28, 2012, 03:49:06 pm » |
Danke für den Tip! Ich habs mit den Ifs gemacht. Meine Setuproutine funktiniert! Ich kann über den encoder im Setupscreen 1. Zeit und Datum einstellen (wird in der RTC gespeichert) 2. Für die Sensoren Namen vergeben wie Wohnzimmer oder Schlafzimmer. (Diese Daten werden im Eeprom gespeichert) Nach X Zeit springt er aus dem Setupscreen in den Standartscreen. dieser wird als nächstes in angriff genommen. Einzige was nicht so schön funktiniert: Der encoder dreht wunderbar vorwärts aber nicht so schön rückwrts. naja mal schauen.... updates folgen mit video 
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #38 on: March 31, 2012, 11:08:08 am » |
Video vom Setup: Das die Anzeige dunkel wird liegt daran das der Rest noch nicht implementiert ist.
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #39 on: April 01, 2012, 03:59:57 am » |
Guten Morgen, ich habe mal wieder eine Frage: Ich habe ein Array: char* roomName[roomName_SIZE] = {"aus","N. N.","Wohnzimmer","Schlafzimmer","Kueche","Buero","Bad"}; Jetzt möchte ich auf dem Display den jeweiligen Namen des Sensors zentriert anzeigen und das soll automatisch passieren. Dafür brauche ich aber die Länge des Namens. Also bei Wohnzimmer z.B.: 10 Ich habe zwar etwas zu sizeof und length gefunden aber irgendwie machen die nicht was sie sollen. bzw nicht was ich möchte roomName[payload[sensor].roomID].length() sizeof(roomName[payload[sensor].roomID]) sizeof(roomName[payload[sensor].roomID])/sizeof(int) Bringt alles nicht das was ich brauche
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 92
|
 |
« Reply #40 on: April 01, 2012, 04:11:36 am » |
Dafür ist die Funktion
strlen()
dein Freund.
Rudi
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #41 on: April 01, 2012, 04:14:05 am » |
THX!! weiter geht's....
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #42 on: April 02, 2012, 05:41:28 pm » |
So mal was anderes: Ich brauche Netzteile für meine Sensoren. Und zwar müssen die ganz klein sein und ohne Gehäuse für direkten Anschluss an 230V. 3,5-5V Ausgangsspannung. Betreiben möchte ich die Jeenodes damit. Am liebsten währen mir diese Dinger: http://jeelabs.org/2012/01/27/cant-be-done/Leider verkauft er diese nicht. Aber die würden super passen. Könnte man sicher auf einer Lochraster aufbauen oder? Hat sonst jemand ne alternative?
|
|
|
|
|
Logged
|
|
|
|
|
NRW
Offline
Sr. Member
Karma: 1
Posts: 373
|
 |
« Reply #43 on: May 25, 2012, 12:49:33 am » |
So, ich versuch es nochmal: Ich suche eine Stromversorgung für meine Home-Temp-Überwachung. Diese wird in ein Steckergehäuse gebaut: http://www.reichelt.de/?ARTICLE=33970;PROVID=1024Die Platine die dort rein kommt sit folgende: http://jeelabs.net/projects/9/wiki/JeeNodeMit dem RoomBoard (das ist aber nicht wirklich Platzintensiev. Dafür brauche ich nun eine Spannungsversorgung. Vom Formfaktor her währe die Größe wie sie hier : http://jeelabs.org/2012/01/27/cant-be-done/verwendet wurde ideal. Wie schon erwähnt gibt es diese Platine aber nicht zu kaufen. Könnt Ihr mir eine Alternative empfehlen?
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Edison Member
Karma: 33
Posts: 1788
Arduino rocks
|
 |
« Reply #44 on: May 25, 2012, 05:16:20 am » |
Du könntest theoretisch die Schaltung auch auf Lochraster nach bauen, vom Schaltungsdesign ist sie ja kaum anders als der Conrad-Bausatz zum Betrieb einer LED an 230V. Alternativ gibt es die USB-Handyladeteile von Drittherstellern, die auch nur ein paar Euro kosten.
|
|
|
|
|
Logged
|
|
|
|
|
|