Hallo liebe Community,
ich würde gerne eine Garagentorsteuerung mit meinem Arduino Nano programmieren. Ich habe schon öfters mit der Arduino IDE (C++) programmiert, aber diesmal klappt es einfach nicht. In meinem Programm soll ein Eingang eingelesen werden und beim Umschalten dieses Einganges, fuer eine bestimmte Zeit ein Impuls auf einen Ausgang geben werde. Die Steuerung soll also ein Impulsrelais ersetzen. Findet ihr irgendwelche Fehler im Programm, die dafür sorgen, dass dieses nicht funktioniert?
// codes make you happy
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
float Bin = 0;
float Frueher = 0;
void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}
void setup() {
pinMode(10,OUTPUT);
pinMode(2,INPUT);
Bin = 0;
while(1) {
if(Bin == 2){
digitalWrite(10,HIGH);
_delay(1);
digitalWrite(10,LOW);
}
if(Bin == 3){
digitalWrite(10,HIGH);
_delay(1);
digitalWrite(10,LOW);
}
_loop();
}
Frueher = digitalRead(2);
while(1) {
if((digitalRead(2) == HIGH) && (Frueher == LOW)){
Bin = 2;
Frueher = digitalRead(2);
}
if((digitalRead(2) == LOW) && (Frueher == HIGH)){
Bin = 3;
Frueher = digitalRead(2);
}
_loop();
}
}
Wenn ein Flankenwechsel am Eingang "I" entweder von 0 auf 1 oder von 1 auf 0 erflogt, sollen am Ausgang ein verzögerter Impuls anliegen.
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.
nrfpaule:
void _loop() {
}
Was genau soll das bewirken ?
Kompiliert dein Sketch ?
Nein, das ist ein Schreibfehler
Ja, mein Sketch kompiliert
Und warum postest du nicht den richtigen Sketch ?
Ich habe den Sketch nun bearbeitet
Der ist aber immer noch nicht der Richtige oder vollständig.
Ahhhh ok.
Dann kann ich nicht richtig sehen ?
Ich finde die "loop()" nicht und auch deine Funktion "_loop()" nicht.
Hallo nrfpaule
Hier kommt ein Monoflop aus der Sketchschublade. Einfach für deine Garagensteuerung anpassen.
/* BLOCK COMMENT
Many thanks to LarryD
https://europe1.discourse-cdn.com/arduino/original/4X/7/e/0/7e0ee1e51f1df32e30893550c85f0dd33244fb0e.jpeg
https://forum.arduino.cc/t/programmierung-einer-garagentorsteuerung/960376
*/
#define ProjectName "Programmierung einer Garagentorsteuerung"
// HARDWARE AND TIMER SETTINGS
// YOU MAY NEED TO CHANGE THESE CONSTANTS TO YOUR HARDWARE AND NEEDS
constexpr byte ButtonPin {A0}; // portPin o---|button|---GND
constexpr byte LedPin {9}; // portPin o---|220|---|LED|---GND
constexpr unsigned long impulsTime {2000};
// VARIABLE DECLARATION AND DEFINITION
unsigned long currentTime;
// -------------------------------------------------------------------
void setup() {
Serial.begin(9600);
Serial.println(F("."));
Serial.print(F("File : ")), Serial.println(__FILE__);
Serial.print(F("Date : ")), Serial.println(__DATE__);
Serial.print(F("Project: ")), Serial.println(ProjectName);
pinMode (LED_BUILTIN, OUTPUT); // used as heartbeat indicator
pinMode(ButtonPin, INPUT_PULLUP);
pinMode(LedPin, OUTPUT);
}
void loop () {
currentTime = millis();
static unsigned long timeStamp=0;
static bool impulsOnOff=false;
digitalWrite(LED_BUILTIN, (currentTime / 500) % 2);
if (!impulsOnOff && !digitalRead(ButtonPin)) impulsOnOff=true, timeStamp=currentTime, digitalWrite(LedPin,HIGH);
if (currentTime-timeStamp>=impulsTime && impulsOnOff) impulsOnOff=false, digitalWrite(LedPin,LOW);
}
Ich wünsche einen geschmeidigen Abend und viel Spass beim Programmieren in C++.
const byte schalterPin = 2;
const byte ausgang = 10;
bool lastSchalter;
unsigned long startZeit;
void setup()
{
pinMode(ausgang, OUTPUT);
pinMode(schalterPin, INPUT_PULLUP);
lastSchalter = digitalRead(schalterPin);
}
void loop()
{
if (digitalRead(schalterPin) != lastSchalter)
{
lastSchalter = !lastSchalter;
digitalWrite(ausgang, HIGH);
startZeit = millis();
}
if (millis() - startZeit > 1000 && digitalRead(ausgang) == HIGH)
digitalWrite(ausgang, LOW);
}
Leider funktioniert das Programm bei mir nicht, es wird aber kompiliert.
Schade, dass du nicht bereit bist zu lernen.
Aber copy & paste ist da genau richtig.
Bitte antworten sie mit einer freundlicheren Tonart. Ich habe den Sketch oben kopiert, eingefuegt und auf Wokwi geladen. Die Anschluesse sind richtig, es funktioniert nicht!
Was heisst das?
Schau mal ins setup() da ist ein pullup aktiv, den kannste mal weg machen...
Vielen Dank! Das Programm funktioniert einwandfrei.
Dein "Problem" damit gelöst?
Wo siehst du etwas unfreundliches ?