Hallo zusammen,
ich komme mit meinem Problem nicht weiter, leider bin ich nicht so
versiert im Umgang mit Arduino. Leichte Projekte konnte ich bis dato.
verwirklichen. So zu meinem Problem:
Ich möchte LED1 mit dem Switch1 einschalten HIGH und LOW und zurück dabei soll das Signal1nur einmal für z.B. 200millis bei HIGH und LOW aufleuchten. Das gehörte für eine LGB Garteneisenbahn Signalsteuerung. Insgesamt kommen 5 Schalter ans Board. BITTE HELFT MIR........
Gruß
J-M-L
April 9, 2022, 9:41am
2
Posten Sie Ihren Code mit Code-Tags.
Leider habe ich nicht viel Code: UND BITTE NICHT LACHEN....
//---------------------- Schalter
const int SW1 = A0;
const int SW2 = A1;
const int SW3 = A2;
const int SW4 = A3;
const int SW5 = A4;
//----------------------- Ausgang für LED Relais
const int LED1 = 2; // SW1
const int LED2 = 3; // SW2
const int LED3 = 4; // SW3
const int LED4 = 5; // SW4
const int LED5 = 6; // SW5
//----------------------- Signalausgang
const int Signal1 = 12;
const int Signal2 = 11;
const int Signal3 = 10;
const int Signal4 = 9;
const int Signal5 = 8;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(Signal1, OUTPUT);
pinMode(Signal2, OUTPUT);
pinMode(Signal3, OUTPUT);
pinMode(Signal4, OUTPUT);
pinMode(Signal5, OUTPUT);
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
pinMode(SW4, INPUT_PULLUP);
pinMode(SW5, INPUT_PULLUP);
}
void loop() {
//------------------------- SW1
if (digitalRead(SW1)==LOW)
{
digitalWrite(LED1, HIGH);
}
else
{
digitalWrite(LED1, LOW);
}
if (digitalRead(SW1)==LOW)
{
Steller();
}
else
{
Steller();
}
}
void Steller() {
digitalWrite(Signal1,HIGH);
delay(200);
digitalWrite(Signal1, LOW);
//delay(200);
}
bitte hilf mir was bedeutet das?
//---------------------- Schalter
const int SW1 = A0;
const int SW2 = A1;
const int SW3 = A2;
const int SW4 = A3;
const int SW5 = A4;
//----------------------- Ausgang für LED Relais
const int LED1 = 2; // SW1
const int LED2 = 3; // SW2
const int LED3 = 4; // SW3
const int LED4 = 5; // SW4
const int LED5 = 6; // SW5
//----------------------- Signalausgang
const int Signal1 = 12;
const int Signal2 = 11;
const int Signal3 = 10;
const int Signal4 = 9;
const int Signal5 = 8;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(Signal1, OUTPUT);
pinMode(Signal2, OUTPUT);
pinMode(Signal3, OUTPUT);
pinMode(Signal4, OUTPUT);
pinMode(Signal5, OUTPUT);
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
pinMode(SW4, INPUT_PULLUP);
pinMode(SW5, INPUT_PULLUP);
}
void loop() {
//------------------------- SW1
if (digitalRead(SW1)==LOW)
{
digitalWrite(LED1, HIGH);
}
else
{
digitalWrite(LED1, LOW);
}
if (digitalRead(SW1)==LOW)
{
//Steller();
}
else
{
Steller();
}
}
void Steller() {
digitalWrite(Signal1,HIGH);
delay(200);
digitalWrite(Signal1, LOW);
delay(200);
}
Das verstehe ich nicht. Wieso HIGH und LOW ?
Entweder HIGH oder LOW.
Wie sind die Leds und Taster angeschlossen.
Bitte ein Schaltbild posten, damit wir das erkennen.
Papier und Bleistiftzeichnung reicht. Dann ein Foto posten.
darf es eine Library sein?
Dann würde ich dir zu meinem LED Toolkit raten:
http://werner.rothschopf.net/microcontroller/202202_tools_led_en.htm
Das Beispiel
0119_pulse_led
zeigt wie man so einen kurzen Impuls mit einem Taster starten kann.
Eine einfache Klasse für Buttons gibts auch in diesem Beispiel
ja du hast Recht.... ich meinte HIGH oder LOW
Hallo,
also Du willst auf den Taster1 drücken und dann soll die LED 1 für 200ms leuchten, und wenn Du Ihn wieder loslässt soll sie ebenfalls für 200ms leuchten.
Dann noch die Frage sollen auch mehrere Taster gleichzeitig gedrückt werden können oder immer nur einer. Im ersten Fall kannst Du mit delay arbeiten im anderen Fall nicht.
Dann solltest Du zunächst mal erkennen ob sich der Zustand von Taster1 geändert hat und wenn er gedrückt ist musst Du dir das merken. Stichwort "Flankenerkennung" für die positive und negative Flanke.
Wenn Du dir nun noch das Thema Array anschaust kannst Du alles in einer for.. Schleife machen.
Heinz
ich hätte verstanden, die Signale sollte nur kurz was machen oder?
#include <Noiasca_led.h> // download library from http://werner.rothschopf.net/microcontroller/202202_tools_led_en.htm
#include <Noiasca_button.h> // some tools to read buttons
//---------------------- Schalter
const byte sw1 = A0;
const byte sw2 = A1;
const byte sw3 = A2;
const byte sw4 = A3;
const byte sw5 = A4;
//----------------------- Ausgang für LED Relais
const byte led1 = 2; // SW1
const byte led2 = 3; // SW2
const byte led3 = 4; // SW3
const byte led4 = 5; // SW4
const byte led5 = 6; // SW5
//----------------------- Signalausgang
const int signal1 = 12;
const int signal2 = 11;
const int signal3 = 10;
const int signal4 = 9;
const int signal5 = 8;
PulsePin signal[] {signal1, signal2, signal3, signal4, signal5}; // any output pin
Button button[] {sw1, sw2, sw3, sw4, sw5}; // button connects pin with GND, "active LOW"
void setup() {
Serial.begin(115200);
for (auto &obj : signal)
{
obj.begin(); // you have to call the .begin() method for each output
obj.setOnInterval(200);
}
for (auto &obj : button)
{
obj.begin(); // you have to call the .begin() method for each button
}
}
void loop() {
for (size_t i = 0; i < sizeof(button) / sizeof(button[0]); i++)
{
// read the buttons
if (button[i].wasPressed())
{
Serial.print(F("button was pressed, pulse ")); Serial.println(i + 1);
signal[i].on(); // switch on LED
}
}
for (auto &obj : signal) obj.update(); // you have to call the .update() method for each output
}
was sollen die LEDs machen?
Bitte gebt mir eine Minute ich male das mal auf und schicke ein Bild
Hallo,
ich bin halt über das und gestolpert das wäre ja auch eine Variante.
Gruß Heinz
Hallo ardustefan
Zeige ein Timingdiagramm für die Mitglieder in der Gruppe 1, -Switch1, LED1, Signal1- für ein besseres Verständnis der Abhängigkeiten.
Wenn der Schalter auf HIGH geschalten wird schatet die LED1 auf HIGH und das Signal1 bei Mosfet soll nur kurz einschalten für ca. 200 millis. Wenn der Schalter wieder auf LOW schaltet soll der Mosfet Signal1 nochmal 200millis eingeschaltet werden.
Ohh jehh hoffe das versteht man?
Hallo,
ja ich denke schon Lösungsansatz siehe #11
Heinz
Was soll mit der LED passieren?
Zur Zeit leuchtet immer noch.