Show Posts
Pages: 1 2 3 [4] 5 6 ... 194
46  International / Deutsch / Re: Datenempfang von xively.com funktioniert nicht on: July 23, 2014, 08:27:29 am
kann mir den keiner helfen? smiley

Wenn Du zu faul bist, Dir die Antwort des Servers auf Deine Anfrage auf den seriellen Monitor auszugeben, dann gib die abgefragte Adresse http://api.xively.com/v2/feeds/1051974661 in Deinem Web-Browser ein und Du wirst sehen, was als Antwort zurückkommt!
47  International / Deutsch / Re: Zeitscheiben für Ereignisse vernünftig programmieren on: July 23, 2014, 08:13:27 am
als Neuling im Arduino Uno - Bereich beschäftige ich mich mit dem Projekt, eine Kamera und Blitze für High-Speed-Fotografie anzusteuern.

Eine einfache Ablaufsteuerung für fotografische Zwecke habe ich hier mal gepostet:
http://forum.arduino.cc/index.php?topic=211536.msg1552201#msg1552201
Das sollte eigentlich ausreichen, um eine zeitliche Abfolge von Schaltvorgängen hochgenau zu steuern.

Für noch extremere Anforderungen an die Wiederholgenauigkeit habe ich hier dann nochmal einen wesentlich aufwändigeren Code gepostet:
http://forum.arduino.cc/index.php?topic=223038.msg1636451#msg1636451
48  International / Deutsch / Re: Frage zu RFID RC 522 on: July 23, 2014, 07:38:48 am
Kann mir da bitte jemand weiterhelfen ? Ich verzweifle hier fast

Wegen Deiner Verzweiflung:
http://www.telefonseelsorge.de/

Wegen Deines Arduino-Problems: Ab der Version 1.0 kennt die Arduino-Software kein WProgram.h mehr.

Falls Du irgendwelche Uralt-Libraries aus der Arduino-Steinzeit verwenden möchtest, müßtest Du diese Libraries erstmal auf Arduino-Softwareversionen ab 1.0 umschreiben. Im einfachsten Falle reicht es manchmal aus, anstelle der nicht mehr vorhandenen Datei WProgram.h die Datei Arduino.h in der Library einzubinden.
49  International / Deutsch / Re: RGB-LED Farbe durch Ultraschallsensor ändern on: July 21, 2014, 03:08:01 pm
Habe denen natürlich einen Widerstand vorgesetzt und zwar so wie hier beschrieben https://learn.adafruit.com/assets/2092.

Dein Sketch ist soweit in Ordnung und er sollte dann auch laufen, wenn Du den Controller nicht durch falsche Beschaltung überlastest und noch einen dicken Fehler im Sketch beseitigtst:
Offenbar fehlt in Deinem eingangs geposteten Sketch die Serial-Initialisierung mit:
Code:
  Serial.begin(9600);
in der setup()-Funktion.

Normalerweise sollte auf Serial dann gar nichts passieren, d.h. weder sollte irgendwas ausgegeben werden noch sollte der Sketch bei Ausgabe bestimmter Werte abstürzen. Vielleicht versuchst Du es mal mit Serial.begin(9600); im setup und schaust nach, wie sich das Programm dann verhält.
50  International / Deutsch / Re: RGB-LED Farbe durch Ultraschallsensor ändern on: July 20, 2014, 06:41:49 am
was das für eine RGB-LED ist, kann ich dir leider nicht sagen. Die war im Funduino - Starter Kit mit bei.

Also wohl eine LowPower RGB-LED (3*20mA).

Wenn ich die RGB-LED alleine betreibe, funktioniert auch alles !

Ja klar, und wenn Du bei einem Hochhaus mit 22 Etagen vom Dach springst, funktioniert beim Weg abwärts auch für 21 Etagen alles!

Wenn Du LEDs direkt und ohne Vorwiderstand an digitale Outputs anschließt, fabrizierst Du eine extrem starke Stromüberlastung. Die LED leuchtet viel zu hell und aus den Outputs saugst Du viel zu viel Strom, so dass Dir der Controller auf dem Board (und natürlich auch die LED) durchbrennen kann.

Für Deine RGB-LED brauchst Du drei geeignete Vorwiderstände, einen für rot, einen für grün und einen für blau.

Was meinst Du weshalb die Dir im Set die Widerstände beigelegt haben?

Hast Du kein Tutorial zu Deinem Set dazubekommen?

Schaue es Dir z.B. hier mal an mit einer RGB-LED und einem Breadboard, falls Du schaltungstechnisch irgendwelche Defizite beim Verständnis hast, wie Du eine LowPower RGB-LED an einen Mikrocontroller anzuschließen hast:
https://learn.adafruit.com/adafruit-arduino-lesson-7-make-an-rgb-led-fader/breadboard-layout
51  International / Deutsch / Re: RGB-LED Farbe durch Ultraschallsensor ändern on: July 20, 2014, 05:47:20 am
Bei weiten Entfernungen klappt dies auch, sobald ich aber näher rangehe, bleibt er einfach hängen, was ich an der Ausgabe im Serial Monitor sehe.

Was für eine RGB-LED?
Bei Lowpower-LED die Vorwiderstände für die RGB-Farben richtig bemessen?
Oder als Highpower-LED mit passender Konstantstromquelle betrieben?

Und warum triggerst Du Deinen Ultraschallsensor um ein tausendfaches langsamer als üblich?

Zum Triggern der Sensoren ist eher ein Triggerimpuls von 10 Mikrosekunden üblich und nicht ein Triggerimpuls von 10 Millisekunden:

Code:
  digitalWrite(TRIGGERPIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIGGERPIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGERPIN, LOW);
52  International / Deutsch / Re: Brauche Hilfe bei einer Stoppuhr on: July 19, 2014, 05:27:55 am
Dann hätte ich es gerne so, das Nachdem Kart 1 im ziel ist, bzw. die erste Zeit halt gestoppt wurden ist angezeigt wird:

00:00:000     XXXXX
XXXXXXXXXXXXXXXX

Und das dann solange bis Kart 2 im Ziel ist. Dann soll halt die Zeit von Kart 2 angezeigt werden:

00:00:000     XXXXX
XXXXXXXXXXXXXXXX

Und dies halt dann solange, bis Kart 1 wieder im Ziel ist....

Da das gezeigte Demo-Programm ganz schulmäßig in eingabe(), verarbeitung() und ausgabe() unterteilt ist, ist eine Änderung der ausgabe() problemlos möglich, indem nur diese eine Funktion geändert wird. Eben so, wie man die Ausgabe gerne hätte.

Ich habe die Ausgabefunktion mal etwas abgeändert:
- nur die erste LCD-Zeile wird zur Ausgabe benutzt
- falls beide Zähler stehen oder beide laufen ==> Wechselanzeige im 3-Sekundentakt
- falls ein Zähler steht und der andere läuft ==> Anzeige nur des stehenden Zählers zusammen mit einem Blinkmarker

Einfach die Ausgabefunktion austauschen:
Code:
void ausgabe()
{
  int hour,minute,second, fraction;
  char timebuf[17];
  boolean markerActive=false;
  int i=(millis()/3000)%2; // Welcher Timer ist zur Darstellung dran?
  if (timerActive[0]!=timerActive[1]) // Ist nur ein Timer aktiv?
  { // in dem Fall nur den inaktiven Timer darstellen
    if (timerActive[0]) i=1; else i=0; // der stehende (andere) Timer wird angezeigt
    markerActive=true;
  }

    unsigned long time=timerTime[i];
    fraction=(time%1000)/10; // Millisekunden/10 = Hundertstel
    time=time/1000;
    second=time%60;
    time=time/60;
    minute=time%60;
    hour=time/60;
    sprintf(timebuf,"%02d:%02d:%02d,%02d",hour,minute,second,fraction);
    lcd.setCursor(0,0);
    lcd.print(i+1);
    lcd.print("= ");
    lcd.print(timebuf);
    if (markerActive && (millis()/500)%2==0)
      lcd.print(" *");
    else 
      lcd.print("  ");
}

Falls eine Anzeige nicht für bis zu 100 Stunden benötigt würde, sondern z.B. nur im Minutenbereich, könnte man ggf. auch beide Timer gleichzeitig nebeneinander in einer Zeile anzeigen.
53  International / Deutsch / Re: Frage zur Taktgenerierung per Arduino on: July 18, 2014, 06:25:18 am
Aber damit wirst Du auch nicht auf eine Rate von 627ms kommen, denn der Aufruf der Funktion und die Abarbeitung der Anweisungen benötigt auch Zeit.

Genau deshalb habe ich in Reply #7 ja auch einen Code gepostet, der seinen Takt einhält und nicht abhängig ist, ob der Code zwischendurch ein paar Millisekunden mehr oder weniger läuft.
54  International / Deutsch / Re: Frage zur Taktgenerierung per Arduino on: July 18, 2014, 05:59:39 am
Wenn ich alle 626ms den pin (x) high setze, dann 50ms warte und anschließend auf low setze, dann ergibt sich doch eine
Gesammtdauer von 676ms, oder zählt der Arduino intern weiter und der high/low Wechsel mit 50ms delay wird nicht
mitgezählt ?

Sowohl der millis() als auch der micros() Zeitzähler zählen auf dem Arduino die Zeit weiter, während ein delay läuft.

D.h. wenn Du "alle 626ms" etwas startest, dann läuft auch "alle 626ms" etwas ab.

Damit etwas wirklich exakt im vorgegebenen Takt abläuft, auch wenn zwischendurch noch anderer Code ausgeführt wird, müßtest Du eben den Impuls jedesmal dann ausgeben, wenn der Millis-Zähler entsprechend vorgelaufen ist.

Beispielcode dafür, um etwas immer im vorgegebenen Zeitabstand auszuführen:
Code:
#define MOTOR 13

void setup() {
  Serial.begin(9600);
  pinMode(MOTOR,OUTPUT);
}

#define TICKTIME 626

boolean oneTick(){
  // testet, ob die TICKTIME vergangen ist
  static unsigned long prevMillis;
  boolean result=false;
  if ( millis() - prevMillis >= TICKTIME)
  {     
    result=true;
    prevMillis += TICKTIME;
  }
  return result;
}


void loop() {
  if (oneTick())
  {
    digitalWrite(MOTOR,HIGH);
    delay(50);
    digitalWrite(MOTOR,LOW);
  }
}

Millisekunden ist allerdings eine recht grobe Teilung. Wenn Du bessere Möglichkeiten zur Feineinstellung haben möchtest, z.B. um Taktfrequenzunterschiede von Arduino-Boards ohne Schwingquarz sondern mit ungenauen Resonatoren etwas auszugleichen, kannst Du die TICKTIME auch in Mikrosekunden vorgeben und in der oneTick()-Funktion micros() statt millis() verwenden.
55  International / Deutsch / Re: Frage zur Taktgenerierung per Arduino on: July 18, 2014, 03:36:38 am
Die Frage ist nun, wenn ich alle 626 Millisekunden ein Signal zum Steppertreiber (A4988) mit der Dauer von 50ms schicke, muss ich den Takt dann so programmieren, dass er alle 626 Millisekunden für 50ms wiederholt wird oder alle 576ms für 50ms ?

Mal kurz in die Beschreibung des Stepper-Treibers reingeschaut und gelesen:
Each pulse to the STEP input corresponds to one microstep of the stepper motor

Unter "pulse" versteht man typischerweise 1*HIGH und 1*LOW = 1 pulse

Also mußt Du alle 626 ms den Ausgang einmal für eine gewisse Zeit HIGH setzen.
56  International / Deutsch / Re: Brauche Hilfe bei einer Stoppuhr on: July 17, 2014, 02:50:03 pm
Wenn das jetzt das Display wäre:

XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX

Dann hätte ich es gerne so, das Nachdem Kart 1 im ziel ist, bzw. die erste Zeit halt gestoppt wurden ist angezeigt wird:

00:00:000     XXXXX
XXXXXXXXXXXXXXXX

Und das dann solange bis Kart 2 im Ziel ist. Dann soll halt die Zeit von Kart 2 angezeigt werden:

00:00:000     XXXXX
XXXXXXXXXXXXXXXX

Also die zweite Zeile soll immer leer bleiben, nur die erste Zeile verwendet werden?
Und die laufenden Zeiten sollen nicht angezeigt werden?

Du brauchst im Display nicht einmal eine Info darüber, ob die gerade nicht angezeigte Zeit läuft oder ob sie gerade angehalten ist?
57  International / Deutsch / Re: Brauche Hilfe bei einer Stoppuhr on: July 17, 2014, 02:27:26 pm
Mit Endzeiten hab ich mich glaub ich ein bisschen falsch ausgedrückt smiley-roll-sweat

Ich meine die Rundenzeiten von Kart 1 und Kart 2 aber immer nur die letzte, und auch nicht im Wechsel.

Zu ändern wäre die "ausgabe()" Funktion.

Wenn Du das nicht alleine hinbekommst, mach mal eine Skizze, was in den zwei Zeilen wie angezeigt werden soll.
58  International / Deutsch / Re: Entfernung auslesen inkl. Ampel (fade) on: July 17, 2014, 02:19:32 pm
Funktinoiert aber nur die Rote LED...
hab ich vllt die beiden andren falsch angeschlossen?
fehlt mir da irgend was? an den Pins 10 und 11 ?

Vielleicht mal die Größe des Vorwiderstands und die Polung der LED prüfen.
59  International / Deutsch / Re: Brauche Hilfe bei einer Stoppuhr on: July 17, 2014, 02:14:45 pm
Hallo nochmals, hat von euch noch einer eine Idee, wie ich die 2 Zeiten nun im Wechsel, auf einer Zeile anzeigen kann.

Also nur die Endzeiten.

Wieso "nur die Endzeiten"?

Wenn Du nicht den vollen Bereich bis 100 Stunden benötigst, sondern z,B. auch Zeiten bis 100 Minuten zur Darstellung reichen und Du auf die hundertstel Sekunden verzichtest, dann kannst Du mit einer Formatierung nach dem Schema "99:99,1" (7 Zeichen) eine Zeit bis 100 Minuten auf Zehntelsekunden genau ausgeben (oder eine Zeit bis 10 Minuten auf Hundertstel), also passen gegebenenfalls locker 2 Zeiten in eine einzige Zeile von 16 Zeichen Breite.

Das würde dann locker ausreichen, um z.B. die aktuell laufenden Zeiten in der ersten Zeile darzustellen und die zuletzt gestoppten Zeiten in Zeile 2.

Ansonsten, wenn Du den vollen Bereich bis 100 Stunden mit einer Auflösung von Hundertstel benötigst, kann man eine Wechselanzeige machen und z.B. immer zwei Sekunden lang die Zeit von Kart-1 und dann zwei Sekunden lang die Zeit von Kart-2 ständig im Wechsel anzeigen lassen.
60  International / Deutsch / Re: Mit Arduino Playstation steuern on: July 17, 2014, 01:52:24 pm
Der Muenzepruefer ist ein einfacher Schalter. Wenn eine Münze einwirft dann der Schalter schaltet einfach ein und wieder aus. Ich habe kein Münzzähler dass soll das Programm machen.
Einfacher
Ich habe ein Led(Playstation)  und ein Schalter(Muenzpruefer)
druck man Schalter Led leuchtet für 1 Minute
nach halbe Minute (währen Led leuchtet)  druck man wieder Schalter dann led leuchtet für noch 1 Minute. Insgesamt 2 Minute

Grober Entwurf ungefähr so:
Code:
#define COINTESTER  2   // Pin für Münzzähler
#define PLAYSTATION 13  // Playstation Pin zum Schalten eines Relais
#define GAMETIME   600  // Spielzeit pro Münze in Sekunden
 
void setup()
{
  Serial.begin (9600);
  pinMode(COINTESTER, INPUT_PULLUP);
  pinMode(PLAYSTATION, OUTPUT);
  Serial.println();
  Serial.println("Insert coin to start a new game!");
  coinInput(); // Münzzählung initialisieren
 }


boolean coinInput()
{
  static byte lastState;
  byte result=false;
  byte state=digitalRead(COINTESTER);
  if (state==LOW && lastState==HIGH) result=true;
  lastState=state;
  delay(5); // Entprellen mechanischer Schaltkontakte
  return result;
}


boolean oneSecond(){
  // Sekundenzähler testet, ob eine Sekunde vergangen ist
  static unsigned long prevMillis;
  boolean result=false;
  if ( millis() - prevMillis >= 1000)
  {     
    result=true;
    prevMillis += 1000;
  }
  return result;
}


unsigned long secondsToGo=0;

void loop()
{
  if (coinInput()) secondsToGo+=GAMETIME;
  if (oneSecond() && secondsToGo>0)
  {
    secondsToGo--;
    Serial.print(secondsToGo);
    Serial.println(" seconds");
    if (secondsToGo==0) Serial.println("Game Over - Insert Coin!");
  }
  //  Relais entsprechend der Restzeit ein- oder ausschalten
  if (secondsToGo==0)
    digitalWrite(PLAYSTATION,LOW);
  else 
    digitalWrite(PLAYSTATION,HIGH);
}

Allerdings ist es nicht besonders schonend für ein Fernsehgerät, dieses per Relais hart ein und aus zu schalten. Viele Geräte dürften sich nach einem Stromausfall auch gar nicht wieder einschalten, wenn der Strom wiederkommt. Aber wenn Du einen Arduino hast, kannst Du ja vielleicht auch eine IR Infrarot-LED ansteuern und dem Monitor Steuerbefehle zum ein- und ausschalten senden.
Pages: 1 2 3 [4] 5 6 ... 194