Show Posts
Pages: 1 ... 62 63 [64] 65 66 ... 94
946  International / Deutsch / Re: sprintf() funktioniert nicht trotz #include <stdio.h> on: June 21, 2012, 01:28:38 pm
Eigentlich gehört die stdio.h schon zur IDE dazu. Ein find auf stdio.h fördert davon mehrere zu Tage.
Folgender minimaler Sketch läßt sich einfach compilieren, auch ohne "#include <stdio.h>".

Code:
void setup() {
  // put your setup code here, to run once:
  char text[20];
 
  sprintf(text,"%d",5);
}

void loop() {
  // put your main code here, to run repeatedly:
 
}

Poste doch mal Deinen Sketch, evtl. steckt da ja der Fehler drin.

Mario.
947  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 08:16:15 am
Die Klasse DateTime der RTClib hat eine Methode "dayOfWeek()", die ein Byte zurück liefert. Vermutlich den Wochentag als Zahl mit entweder Mo=0, Di=1 ... So=6 oder auch beginnend mit Sonntag So=0. Das müßtest Du ausprobieren.
Code:
//aktuelle Zeit
DateTime now = RTC.now();

//wochentag ermitteln
byte wochentag = now.dayOfWeek();
948  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 06:19:24 am
dataStringDate und dataStringTime sind Arrays vom Typ "character" (also ein Zeichen). Die Zahl gibt an, wie groß der "Container", also das Array sein soll. Die 11 kommt wiefolgt zustande: 2 Zeichen für den Tag, zwei Zeichen für den Montat und 4 Zeichen für das Jahr, dazu noch die zwei Punkte, das macht schon mal 10 Zeichen. Das 11 Zeichen wird benötigt, weil in C/C++ Strings (Zeichenketten) mit einer 0 (der Wert Null, nicht das Zeichen "0") terminiert werden. Somit muss man sich nicht immer merken, wie lang eine Zeichenkette ist. Bei der Verarbeitung wird immer so lange gelesen, bis man den Wert "0" findet.
949  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 04:02:09 am
Ja, einfach 2 Strings erzeugen  smiley
Code:
const char DATEFORMAT[] = "%02u.%02u.%04u";
const char TIMEFORMAT[] = "%02u:%02u:%02u";
...
 void loop() {

...
  static char dateString[11];
    sprintf(dateString, DATEFORMAT, now.day(), now.month(), now.year);
  static char timeString[9];
    sprintf(timeString, TIMEFORMAT, now.hour(),now.minute(),now.second() );

Serial.println(dateString); // Oder statt dessen  auf's LCD
Serial.println(timeString); // Oder statt dessen  auf's LCD

950  International / Deutsch / Re: Ausgang per Uhrzeit/Datum schalten on: June 20, 2012, 02:26:54 pm
Das sieht doch recht gut aus. Aus meiner Sicht sollte das passen. Du kannst ja als Kontrolle einfach den berechneten time2000 Wert mal zum Setzen der RTC verwenden und dann das Datum und die Uhrzeit auslesen. Das sollte dann nämlich stimmen.
Mario.
951  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 20, 2012, 05:42:52 am
Die Definition von "LOGFORMAT" muss ausserhalb der Funktion setup() erfolgen. Sonst ist es nur eine lokale Variable die nur innerhalb von setup() bekannt ist.
Also das
Code:
const char LOGFORMAT[] = "%02u.%02u.%04u %02u:%02u:%02u";
einfach vor setup() { ...} setzen.
952  International / Deutsch / Re: Sharp Is471f mit dem Arduino steuern on: June 19, 2012, 03:23:49 am
Dann würde ich ab jetzt schrittweise vorgehen.
Versuch erstmal mit folgendem Sketch heraus zu finden, ob der Sensor überhaupt was liefert:
Code:
const int sharp = 6;     
int buttonState = 0;       

void setup() {
  Serial.begin(9600);
  pinMode(sharp, INPUT);     
}

void loop(){
 
  buttonState = digitalRead(sharp);
 
  //status auf die serielle Konsole ausgeben
  Serial.print("state = ");
  Serial.println(buttonState);
 
  //eine Sekunde warten
  delay(1000);

}
Und poste mal bitte, wie Du den Sensor an den Arduino angeschlossen hast. Wenn der Sensor eine eigene Spannungsversorgung hat und nicht über den Arduino versorgt wird, müssen die beiden Massen verbunden sein, sonst passiert da nix.
953  International / Deutsch / Re: Sharp Is471f mit dem Arduino steuern on: June 18, 2012, 11:49:55 pm
Ein Fehler steckt schon mal im Code.
Code:
void loop(){
 
  buttonState = digitalRead(sharp);

 
  if (sharp == HIGH {     
 
    digitalWrite(ledPin, HIGH); 
  }
  else {
   
    digitalWrite(ledPin, LOW);
  }

sharp ist die Variable in der Du die Pin-Nr speicherst, an das Dein Sensor angeschlossen ist. buttonState ist die Variable, in der Du den aktuellen Zustand des Sensors speicherst. Allerdings prüfst Du im if-Block auf "sharp == HIGH" statt auf "buttonState == HIGH"
Du prüfst also schonmal die falsche Variable.
Mario.
954  International / Deutsch / Re: Ausgang per Uhrzeit/Datum schalten on: June 18, 2012, 01:49:30 pm
Du kannst den "komplizierten" Teil der Berechnung ja auch das PHP übernehmen lassen, also z.B. das Berechnen der Einschalt- und Ausschaltzeit in das RTC.time2000 Format (also Sekunden seit 01.01.2000) Damit hast Du nur zwei Sekunden-Werte (32Bit Werte, also unsigned long) die Du übertragen und vergleichen musst, um die  Einschalt- und Ausschaltzeit zu haben. Das spart das ganze Wochentags und Stunden-Gerechne.
Dein Sketch hat dann pro Timer einfach zwei Werte statt nur einem für die Dauer. Wert 1 ist der time2000 Wert zum einschalten des Ventils und Wert 2 ist der time2000 Wert zum Ausschalten. Du musst nun nur jede Sekunde (besser 2x pro Sekunde, damit man den Zeitpunkt auch wirklich trifft) prüfen, ob bei irgendeinem Timer einer der Werte erreicht ist, und dann entsprechend schalten.
955  International / Deutsch / Re: Eclipse Problem on: June 18, 2012, 01:41:20 pm
Nicht Arduino/Eclipse, sondern Android/Eclipse Forum (Arduino != Android). Dein Problem ist NICHT auf der Arduino-Seite, sondern auf der Android-SDK Seite. Zumindest vermute ich das anhand der wenigen Fehlermeldungen die Du gepostet hast.
956  International / Deutsch / Re: Lichtsensoren und Taster funktionieren nicht? on: June 18, 2012, 01:07:58 pm
Hallo TinkTank,

willkommen im Forum. Bei Posts mit konkreten Fragen ist es für die mitlesenden hilfreich, wenn Du Links zu den von Dir verwendeten Komponenten postest, denn mittlerweile gibt es so viele Erweiterungen und Shields, das wir nicht alle kennen können.
Weiterhin ist es gut zu Deinem Problem zusätzlich zu schreiben, welche Version der IDE Du verwendest. Hier gab es in jüngerer Zeit einen größeren Versionswechsel, der dazu führt, das viele ältere Beispiele und Bibliotheken Probleme bereiten. In solchen Fällen sind die Fehlermeldungen des Compilers / der IDE hilfreich, da man so das Problem schnell eingrenzen kann.

Da Du vermutlich den Code angepasst hast, damit die IDE ihn übersetzt, wäre es gut, wenn Du den Code auch postest. Am besten in den "#" Code-Tags, das macht das Lesen einfacher.

Mario.
957  International / Deutsch / Re: Eclipse Problem on: June 18, 2012, 12:55:09 pm
Also aus dem Hut kann ich auch keine Erklärung zaubern. Ein Link zu dem Beispiel das Du versuchst zu bauen wäre schon mal hilfreich. Dazu kommt, und daher die FRage ob das Forum das richtige ist, handelt es sich ja nicht um einen Arduino Fehler. Auch verwendest Du ja Eclipse nicht für die Programmierung des Arduino, sondern um ein Programm für Dein Android Tablet oder Smartphone zu bauen. Evtl. solltest Du Dich an ein Android / Eclipse Forum wenden.

Wichtig ist vor allem:

  • Welche Version von Eclipse
  • Welche Version des Android SDK
  • Welches Beispiel willst Du compilieren
  • Möglichst die vollständige Fehlermeldung, weil die sehe ich nirgendwo
958  International / Deutsch / Re: Kurze Frage zu char* on: June 18, 2012, 12:00:38 pm
Das Der Code mit dem Komma funktioniert ist "Zufall", denn vermutlich interpretiert der Compiler die nachfolgende Zeile mit dem dtostrf() zur Zeile Temp = 77.5, dazu.
Setzt man nämlich ein syntaktisch korrektes "int i = 0;" zwischen die Zeilen, meckert der Compiler.

Das nur der Vollständigkeit halber. Keine Ahnung welche Seiteneffekte Dein Code mit dieser "Pseudozuweisung" auslöst, da Temp ja eigentlich ein float und die dtostrf() der AVR LibC (siehe http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html) liefert eigentlich ein char* (also 16 Bit Pointer) zurück.
959  International / Deutsch / Re: Eclipse Problem on: June 18, 2012, 10:32:45 am
Bist Du sicher, das Du hier im richtigen Forum bist?
Das ist kein Fehler der sich auf den Arduino bezieht, sondern ein Android-SDK Problem. Zumindest legt das die Fehlermeldung nahe.
Etwas mehr Infos bezüglich Projekt, Umgebung, Betriebssystem, usw. wären beim Befragen der Glaskugel hilfreich.

Versuchst Du evtl. eine Android <-> Arduino Verbindung und willst den Android-Teil in Eclipse bauen?
960  International / Deutsch / Re: Kurze Frage zu char* on: June 18, 2012, 10:29:26 am
nein, das brauchst Du nicht. In C können char[] und char* quasi synonym verwendet werden.
Wenn Du ein
Code:
//definiere ein Array mit 25 Zeichen (24 können für den String verwendet werden, 25. für \0)
char meinString[25] = "ich bin der Text";
// (fast) identisch ist:
char* meinString2 = "Ich bin der Text 2";
definierst, kannst Du einfach ein
Code:
Serial.println(meinString);
//bzw.
Serial.println(meinString2);
machen und der String wird ausgegeben. Dabei wird die Nullterminierung automatisch beachtet.

Dein ursprüngliches Problem war, das Du NUR den Adresspointer definiert hast, aber nicht den Speicherbereich, der dann die eigentlichen Daten aufnimmt.
Der Funktion dtostrf() ist das aber wurscht, die schreibt ab der Adresse in den Speicher und überschreibt dabei vermutlich andere Variablen Deines Programms die im Speicher hinter Deinem Pointer liegen.

Abgesehen davon, sehe ich gerade das Dein Sketch noch nicht mal compilieren dürfte, da Du hinter
Temp = 22.5,
ein Komma statt eines Semikolon steht.
Hast Du den originalen Sketch gepostet der nichts anzeigt, oder ist das nur ein Beispiel gewesen?
Mario.
Pages: 1 ... 62 63 [64] 65 66 ... 94