INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Lauflicht mit externem Takt
04.02.2020, 13:25
Beitrag #1
Lauflicht mit externem Takt
Hallo @ll,
ich brauche mal wieder Eure Hilfe.
Ich habe ein einfaches 4 Kanal Lauflicht mit einem Nano aufgebaut.
Hier der Sketch:
Code:
//======================================
// Einfaches Lauflicht von Manny
//======================================

int sensorPin = 0;
int ledPin2 = 2;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin[4] = {2,3,4,5};

int sensorValue = 0;

//======================================

void setup() {
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
  pinMode(ledPin4,OUTPUT);
  pinMode(ledPin5,OUTPUT);
  
  Serial.begin(9600);
}

//=======================================

void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.println();
  Serial.println(sensorValue); // min= 0, max= 677 bei 3,3 Volt Anschuß A0
  
  for (int i = 0; i<4; i++)
     {  
      digitalWrite(ledPin [i], HIGH);
      delay(sensorValue);  
      digitalWrite(ledPin [i], LOW);
      delay(50);      
      }
}

// ======================================

Ich möchte jetzt das Ganze extern Takten.
Dabei liegt am Pin D6 den ich als Eingang nutze der externe Takt Impuls.

Wie kann ich jetzt meinen Code so ändern das die Geschwindigkeit nicht mehr vom
sensorValue sondern vom Takt Impuls abhängig ist.
Ideal wäre es wann ich den Eingangsimpuls noch teilen und anpassen könnte fals er zu schnell wird.

Habt Ihr vielleicht eine Idee dazu? Idea

Vielen Dank,
Manny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 13:35
Beitrag #2
RE: Lauflicht mit externem Takt
Das hängt etwas davon ab, wie schnell der externe Takt sein soll und in welcher Wellenform er vorliegt. Wenn es kein Rechteck ist, sollte davor noch etwas Elektronik geschaltet werden.
Da kommt dann entweder eine Bestimmung der Länge (langsamer Takt) oder ein Zählen der Impulse pro Zeiteinheit in Frage.

Benutze nicht pulseIn, das blockiert. Eine Lib zur Frequenzmessung wäre z.B. hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 13:50
Beitrag #3
RE: Lauflicht mit externem Takt
(04.02.2020 13:35)Tommy56 schrieb:  Das hängt etwas davon ab, wie schnell der externe Takt sein soll und in welcher Wellenform er vorliegt. Wenn es kein Rechteck ist, sollte davor noch etwas Elektronik geschaltet werden.

Der Takt kommt von einem Optokoppler .
Ohne Signal habe ich eine High Pegel, bei jedem Impuls geht das Signal auf Low

(04.02.2020 13:35)Tommy56 schrieb:  Da kommt dann entweder eine Bestimmung der Länge (langsamer Takt) oder ein Zählen der Impulse pro Zeiteinheit in Frage.

Benutze nicht pulseIn, das blockiert. Eine Lib zur Frequenzmessung wäre z.B. hier.

Gruß Tommy

Kann man nicht einfach bei jedem Impuls das Lauflicht ein Kanal weiter schalten?
Ich muss nicht die genaue Länge haben.

Gruß Manny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2020 14:07 von Tommy56.)
Beitrag #4
RE: Lauflicht mit externem Takt
Das kanns Du auch machen, das ging aus Deiner Beschreibung nicht hervor. Besonders die Bemerkung zum Taktteiler passte nicht dazu.

Ungetestet:
Code:
//======================================
// Einfaches Lauflicht von Manny
//======================================

byte taktPin = 6; // wir haben nicht mehr als 256 Pins
byte ledPin[4] = {2,3,4,5};

bool oldStatus = HIGH;
byte idx = 3;

//======================================

void setup() {
  for (byte i = 0; i<4; i++) pinMode(ledPin[i],OUTPUT);
  Serial.begin(9600);
}

//=======================================

void loop() {
  bool input = digitalRead(taktPin);
  if (input != oldStatus) {  // Flankenerkennung
    oldStatus = input;
    if (!input) {  // LOW-aktiv
      digitalWrite(ledPin [idx], LOW);
      idx++;
      idx = idx % 4;    
      digitalWrite(ledPin [idx], HIGH);
    }
  }
}

Mit jeder HIGH-LOW-Flanke wird auf die nächste LED umgeschaltet.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 14:28
Beitrag #5
RE: Lauflicht mit externem Takt
(04.02.2020 14:07)Tommy56 schrieb:  Das kanns Du auch machen, das ging aus Deiner Beschreibung nicht hervor. Besonders die Bemerkung zum Taktteiler passte nicht dazu.

Ungetestet:
Code:
//======================================
// Einfaches Lauflicht von Manny
//======================================

byte taktPin = 6; // wir haben nicht mehr als 256 Pins
byte ledPin[4] = {2,3,4,5};

bool oldStatus = HIGH;
byte idx = 3;

//======================================

void setup() {
  for (byte i = 0; i<4; i++) pinMode(ledPin[i],OUTPUT);
  Serial.begin(9600);
}

//=======================================

void loop() {
  bool input = digitalRead(taktPin);
  if (input != oldStatus) {  // Flankenerkennung
    oldStatus = input;
    if (!input) {  // LOW-aktiv
      digitalWrite(ledPin [idx], LOW);
      idx++;
      idx = idx % 4;    
      digitalWrite(ledPin [idx], HIGH);
    }
  }
}

Mit jeder HIGH-LOW-Flanke wird auf die nächste LED umgeschaltet.

Gruß Tommy

Vielen Dank Tommy,
genau so habe ich es mir vorgestellt.
Big Grin

Was hier noch fehlt ist dass das Lauflicht ohne Signal in einem festen Grundtakt laufen soll den ich über eine feste Variable einstellen kann.

Im Moment läuft es nicht ohne Signal am Eingang.

Gruß Manny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 14:36
Beitrag #6
RE: Lauflicht mit externem Takt
Du kommst auch bei jedem Posting mit einer neuen Erweiterung. Was kommt dann als nächstes?

Woran soll der Arduino erkennen, dass kein Signal anliegt?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2020, 14:41
Beitrag #7
RE: Lauflicht mit externem Takt
Sorry, habe Anfangs vorausgesetzt das ein Lauflicht auch läuft.
Ich werde mal versuchen das alles zu verstehen was du mir in den Code eingepackt hast Wink

Vielen Dank,
Manny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2020, 18:50
Beitrag #8
RE: Lauflicht mit externem Takt
Hmmm... ich blicke da nicht durch Confused Undecided
Der Anfang ist ja noch klar aber die beiden letzten Zeilen?
Besonders dieses: "idx = idx % 4; " was macht das % hier?

(04.02.2020 14:07)Tommy56 schrieb:  
Code:
.
.

void loop() {
  bool input = digitalRead(taktPin);
  if (input != oldStatus) {  // Flankenerkennung
    oldStatus = input;
    if (!input) {  // LOW-aktiv
      digitalWrite(ledPin [idx], LOW);
      idx++;
      idx = idx % 4;
      digitalWrite(ledPin [idx], HIGH);
    }
  }
}

Mit jeder HIGH-LOW-Flanke wird auf die nächste LED umgeschaltet.

Gruß Tommy

Gruß Manny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Lauflicht Spezial Charlie 7 671 25.03.2020 00:23
Letzter Beitrag: senseman
Question Lauflicht mit zufälligem Stop Platinum 5 628 20.02.2020 20:07
Letzter Beitrag: Tommy56
  Lauflicht mit Interrupt senseman 18 2.401 09.12.2019 22:37
Letzter Beitrag: senseman
  RGB LED Lauflicht per Taster unterbrechen AC_DC_new 28 5.665 05.08.2018 19:16
Letzter Beitrag: AC_DC_new
  Lauflicht mit Kontrolle Golffahrer 13 3.256 13.05.2018 19:59
Letzter Beitrag: Tommy56
  PCA9685 auf Externen Takt umschalten. Herby0107 5 2.562 10.09.2017 17:23
Letzter Beitrag: Tommy56
  Problem mit externem Interrupt manfred474 13 5.218 13.08.2017 08:54
Letzter Beitrag: MicroBahner
  Lauflicht mit Fernbedienung und Shift Register Golffahrer 8 3.673 02.07.2017 19:05
Letzter Beitrag: Tommy56
  Lauflicht mit Nano Pixel und Joystick strobo 3 2.234 20.05.2017 20:16
Letzter Beitrag: Tommy56
  Takt einlesen Igor_H 4 2.182 07.11.2015 12:06
Letzter Beitrag: Igor_H

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste