Show Posts
Pages: 1 [2] 3 4 ... 7
16  International / Deutsch / Re: tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 04:56:21 pm
Da passiert ebenfalls das gleiche.
Das Problem scheint an der Timernutzung der tone()-Funktion zu liegen.
Mit

Code:
  digitalWrite(ledPIN, HIGH);
  for (int i = 0; i < signalTime * 2; i++) {
  digitalWrite(speakerPIN, HIGH);
  delayMicroseconds(250);
  digitalWrite(speakerPIN, LOW);
  delayMicroseconds(250);
  }
  digitalWrite(ledPIN, LOW);

funktioniert es.
Das ist zwar nicht die perfekte, aber immerhin eine funktionierende Lösung.
Also Tonausgabe selbst generiert ...

Danke für die Hilfe, bin gerne zum Testen bereit, wenn noch jemand eine perfekte Idee hat ...

Dirk
17  International / Deutsch / Re: tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 03:55:55 pm
Nein, passiert nicht.
LED blinkt kurz auf und ist wieder aus.

Und das was du beschreibst, mit den zeitgleich an und aus, ist je das, was ich eigentlich will ...

Danke für den Ansatz.
18  International / Deutsch / Re: Arduino Mega als Schaltcomputer missbrauchen on: June 16, 2013, 11:56:10 am
Interessant wäre die Frage, wie die Uhrzeit kontrolliert wird (Display?) und wie die Steuerung der Relais hinterlegt ist, "delay()" könnte da z.B. eigenwillige Effekte haben, da es ja den Arduino in der Abarbeitung seiner Routinen unterbricht.
Aber die DCF-Library nutzt Interrupt, da sollte nichts zwischenfunken.

19  International / Deutsch / Re: tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 11:23:31 am
Nein, der Vorwiderstand passt.
220 Ohm begrenzt den Strom auf max 27mA, Eigenschaften der LED vernachlässigt.
Ohne tone() tut sie auch wie gewünscht.
Hatte auch schon einen Schalttransistor testweise zwischengesetzt, keine Änderung.


20  International / Deutsch / Re: tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 11:14:52 am
@Serenifly:
Was ja passen würde, die Ausgabe von tone() funktioniert ja problemlos, nur die parallele Ansteuerung einer LED auf einem DigitalOut-PIN leider nicht.

Dirk

Wegen Überschneidung als Nachtrag @jurs:
Software ist 1.0.5
Ja, ist ein Ausschnitt aus einem größeren Sketch.
Aber es funktioniert eben auch im "kleinen", also minimierten Code nicht.
tone() tut wie soll, parallele Ansteuerung einer LED lässt diese nur kurz "aufblinken" und nicht die gewünschte Zeit anbleiben.

21  International / Deutsch / Re: tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 10:34:41 am
Hmm, gute Frage.
Warum sollte ich denn einen PWM-Port nehmen, hab in der Doku zu tone() nix dahingehend gefunden ...
tone() schaltet doch den DigitalOut nur ein und aus und macht keine PWM?

Aber auch der Tausch der beiden Ports bringt keinen Unterschied zu vorher.
Also Status unverändert.

Dirk
22  International / Deutsch / tone() und LED-Ausgabe parallel funktioniert nicht!? on: June 16, 2013, 09:13:33 am
Hallo,

ich möchte mit auf einem PIN meines Leonardo ein Ton ausgeben, parallel dazu soll eine LED leuchten.
Beides soll x Sekunden als Benachrichtigung bei bestimmten Events ausgegeben werden.
Als Ausgabe des Tons verwende ich einen Piezo an PIN 12, die LED ist an PIN 13.
Leider schaltet die LED aber immer sofort wieder ab, wo ist mein Fehler?
Ich hab folgendes probiert

Code:
  // init
  int speakerPIN =12;
  int ledPIN = 13;
  int signalTime = 5000;

  // void setup() ...
  // void loop() ...
 
  tone(speakerPIN, 2000, signalTime);
  digitalWrite(ledPIN, HIGH);
  delay(signalTime);
  digitalWrite(ledPIN, LOW);

Auch mit

Code:
  tone(speakerPIN, 2000);
  digitalWrite(ledPIN, HIGH);
  delay(signalTime);
  noTone(speakerPIN);
  digitalWrite(ledPIN, LOW);

wird es nicht anders.

Dirk
23  International / Deutsch / Problem mit Interrupt-Routine/PIN-Belegung und GLCD on: June 16, 2013, 05:29:09 am
Hallo liebe Unterstützer,

ich baue gerade für einen Freund eine "Da ist oder war jemand oder etwas auf meinem Grundstück-Alarmanlage".
Eckdaten:
Ich nutze einen Leonardo mit einem 128x64 GLCD zur Anzeige.
Dazu einen DCF77-Empfänger (PIN 3 / Interrupt 0), 3 PIR (die von Adafruit, PIN 0-2, Interrupt 1-3), einen Piezo und ein Relaismodul.
Viel für so ein kleinen Arduino, aber er wird das meistern!

Generelle Funktion:
Das DCF-Modul sorgt für gute Zeit, funktioniert auch.
Die PIR sollen eine Bewegung wahrnehmen, ein Signal über einen Piezo ausgeben und die Auslösung soll dann im Display protokolliert werden.
Zweck:
- Wenn jemand auf dem Grundstück ist, soll er einfach über ein Signal (Piezo oder externe Klingel via Relais) mitbekommen, dass da Besuch kommt.
- Wenn niemand auf dem Grundstück ist möchte er hinterher wissen, ob jemand da war und wenn ja wo (PIR an verschiedenen Stellen des Grundstücks, mehrere Zugänge).
Dazu wird das Display (Ideenfindung noch nicht final abgeschlossen) einfach die Anzahl der Auslösungen pro PIR und die letzte Auslösezeit anzeigen.

Ein Reset setzt leider auch die Zeit zurück, aber eine RTC bekomme ich da nicht noch unter ...

Im Prinzip funktioniert alles bis auf zwei Kleinigkeiten:

1) Wenn ich nur einen PIR anschließe (PIN0, Interrupt 2), dann habe ich auf PIN1(Int3) das gleiche Signal, die Interrupt-Routine läufft dann für beide PINs, das gleich gilt für PIN3/Interrupt0 und PIN2(Int1). Muss / sollte ich die PINs irgendwie terminieren? Definition ist
Code:
  attachInterrupt(2, signalAlertA, RISING);
  attachInterrupt(3, signalAlertB, RISING);
  attachInterrupt(1, signalAlertC, RISING);

2) Nach einer gewissen Laufzeit (mehrere Stunden) fällt die linke Hälfte des Displays aus, wenn ich alle Interrupts laufen lasse. Bei nur einem PIR + DCF läuft das ganze problemlos wochenlang. Könnte also ein Speicherproblem sein!? Aber wo und wie bekomme ich die tatsächliche Speichernutzung mit? Sketchgröße ist bei etwa 20k (Bei einem Limit von 28k).

Über ein paar Denkanstöße wäre ich sehr dankbar.

Danke euch

Dirk
24  International / Deutsch / Re: Verschiedene LCD Displays on: June 16, 2013, 05:05:51 am
Und noch eine kurze Anmerkung zum Programmieraufwand.
Bei GLCD (U8 hab ich noch nicht genutzt) kann man Bereiche definieren (TextArea mit Eckpunkten auf dem Display), dieses einfach adressieren:

Code:
  TextArea.DefineArea(3, 12, GLCD.Right-3, GLCD.Bottom-3, SCROLL_UP);
  TextArea.SelectFont(System5x7);
  TextArea.CursorTo(0,0);
  TextArea.println("Hello World");
  TextArea.println("noch 'ne Zeile");
 

Das ist dann nicht komplizierter als ein "normales" Textdisplay, nur viel flexibler.

Dirk
25  International / Deutsch / Re: Mit welchem Arduino soll ich anfangen? on: April 05, 2013, 12:56:28 am
Noch einfacher: WS2811/12-basierte LED-Ketten nehmen, mehrmals im Forum angesprochen und beschrieben.
26  International / Deutsch / Re: Beginner Fragen on: March 21, 2013, 01:35:58 pm
Der Code muss in der IDE kompiliert und in den Arduino geladen werden, er wird dort nichtflüchtig gespeichert und steht zur Nutzung zur Verfügung.
Das bedeutet, er startet auch, wenn keine Verbindung zum PC besteht.
Die Verbindung zum PC wird als serielle Verbindung auf einem COM-Port etabliert. Über diese Verbindung kann mit einem laufenden Arduino-Sketch komuniziert werden, also Ausgaben angezeigt oder auch Werte zum Arduino übertragen werden. Darüber lässt sich dann auch ein Arduino-Sketch steuern.

Liebe Grüße

Dirk
27  International / Deutsch / Re: Arduino und TVOut on: March 16, 2013, 01:50:38 pm
Hi,

ja, Uwe hat, wie immer, recht.
Das aufmodulierte Farbsignal und den dazugehörigen Träger hab ich ebenfalls nicht erwähnt.

Dirk
28  International / Deutsch / Re: Arduino und TVOut on: March 16, 2013, 12:04:48 pm
Ein paar allgemeine Infos:

Ein Fernsehsignal in s/w am AV-Eingang ist ein BAS-Signal.
Mit Farbsignal dazu dann FBAS.
Das Fernsehsignal besteht aus 50 Halbbildern = 25 Vollbildern.
Jedes Vollbild besteht aus 625 Zeilen.
Ein Halbbild "beschreibt" jede zweite Zeile, also theoretisch 312,5 Zeilen pro Halbbild.
Davon abgezogen werden die Zeilen, in deren "Zeit", besser Taktzyklus, der vertikale Rücklauf fällt.
Somit sind etwa 575 Zeilen pro Vollbild "sichtbar", also 287,5 Zeilen pro Halbbild mit Signal zu füttern und die restlichen 25 Zeilen bleiben für den (vertikalen) Bildrücklauf.
Jede Zeile ist 64 µs lang und besteht aus der vorderen und hinteren Schwarzschulter (Zeilenrücklauf) und 52 µs Bildinhalt.
Das Synchronsignal ist dabei 1,5 µs Schwarz-Level, 4,7 µs Synchronsignal (der einzige Signalanteil negativ zum Schwarzanteil) und nochmals 5,8 µs Schwarz-Level.
Der Vertikalrücklauf sind reine Synchronanteile: 2,5 Zeilen, 2,5 Zeilen, 2,5 Zeilen (Vortrabanten, V-Sync, Nachtrabanten).
Die theoretisch verbleibenden Zeilen gehen im realen Signal unter, da der Bildrücklauf länger ist als das Bildrücklauf-Synchronsignal, effektiv werden bei TV-Geräten sogar duch Ränder noch weniger Zeilen dargestellt (oben und unten abgeschnitten).
Entsprechend diesen Daten müssen die Timings sein.

Dirk


29  International / Deutsch / Re: Probleme mit I2C Displays und einem Mega 2560 on: March 16, 2013, 11:36:24 am
eventuell auch andersherum, erst delay(50), danach lcd.init()

Dirk
30  International / Deutsch / Re: Offtopic - Renesas wird frech - Konkurrenz für Arduino on: March 11, 2013, 06:10:49 pm
Naja, der RaspPi  ist denn ja doch noch wieder anders, ist ja kein µC in dem Sinn, wie wir den ATMega / Arduino benutzen, sondern eher schon ein Mini-PC.
Für die entsprechenden Zwecke unbestritten gut.
Aber wer mit einem µC bauen und arbeiten will und mit dem ATMega an die Grenzen stößt, für den könnte das schon interessant sein.
Alternativ kann man ja auch den Arduino Due nehmen.
Und wer sich PIN-kompatibel zum Arduino macht scheut zumindest auch den Vergleich der Arduino-Gemeinde nicht, da ein direkter Vergleich dadurch schon vereinfacht wird.
Ich möchte auch nicht cloud-basiert meinen Code hinrotzen (Entschuldigung), aber für manchen mag auch das gut sein.

Dirk
Pages: 1 [2] 3 4 ... 7