C (Programmiersprache) – die besten Beiträge

Interrupt im Programmablaufplan?

Hey, ich muss gerade für NWT einen PAP zeichnen.in dem Programm kommt auch der interrupt- Befehl vor. Ich weiß aber nicht wie genau ich ihn in den PAP einbauen soll. Der Interrupt-Befehl kommt im setup vor fällt er dann also unter start, so wie die ganzen Deklaration zum Beispiel auch? Wie würdet ihr das machen? Wohin geht der Pfeil dann nieder zurück vom unterprogramm?
meine Idee war diese hier (grobe Skizze, Befehle sind noch nicht eingetragen):

Das Programm hierzu ist übrigens das:

int warteZeit = 500;     
int versagtZeit = 0;
int tasterStatus;
int tasterPin = 2;
int Pin;
int Signal = 0;
int startZeit = 500;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LED4 = 7;
int LED5 = 8;
int DurchgangsZaehler = 0;

void setup() {
 pinMode(tasterPin, INPUT_PULLUP);         
 pinMode(LED1, OUTPUT);                    
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
 pinMode(LED4, OUTPUT);
 pinMode(LED5, OUTPUT);
 Serial.begin(9600);                       
 attachInterrupt(digitalPinToInterrupt(tasterPin), tempo, FALLING);     
}

void loop() {
  for ( Pin = LED1; Pin < LED5; Pin++) {  
   digitalWrite(Pin, HIGH);                    
   delay(warteZeit);                         
   digitalWrite(Pin, LOW);                     
   if (Signal == 1) {                       
    for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) { 
     digitalWrite(LED1, HIGH);                
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                              
     digitalWrite(LED1, LOW);                
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                              
    }

    Signal = 0;                              
    warteZeit=startZeit;                       
  }
 }
 for ( Pin = LED5; Pin > LED1; Pin--) {                         
 digitalWrite(Pin,HIGH);
delay(warteZeit);                                                                                      digitalWrite(Pin, LOW);                                       
    if (Signal == 1) {                                          
   for (DurchgangsZaehler = 0; DurchgangsZaehler < 3; DurchgangsZaehler++) {  
     digitalWrite(LED1, HIGH);                                   
     digitalWrite(LED2, HIGH);
     digitalWrite(LED3, HIGH);
     digitalWrite(LED4, HIGH);
     digitalWrite(LED5, HIGH);
     delay(200);                                                
     digitalWrite(LED1, LOW);                                    
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);
     digitalWrite(LED4, LOW);
     digitalWrite(LED5, LOW);
     delay(200);                                                 
   }
   Signal = 0;                                                   
   warteZeit=startZeit;                                         
  }
 }
 Serial.print("Wartezeit=");                                   
 Serial.println(warteZeit);
}
void tempo() {                                                  
if (digitalRead(tasterPin) == 0 && Pin == 6) {                  
   warteZeit = warteZeit - 50;                                  
   Serial.print("Richtig gedrückt, Wartezeit beträgt nun ");   
   Serial.print(warteZeit);
   Serial.println(" Millisekunden");
 }
 else {                                                       
   Signal = 1;                                                 
}
}

Danke schonmal, falls ihr trotz dieser langen Frage antwortet

Bild zum Beitrag
Cplusplus, Arduino, NWT, Programmiersprache, C (Programmiersprache), PAP, nwt-projekt, Arduino Uno, Arduino IDE

Arduino Uno Wifi Rev.2 verbindet sich nicht mit dem Internet?

Ich versuche meinen Arduino Uno Wifi Rev.2 mit dem WLAN zu verbinden. Der Code (Beispiel Code WiFi Nina ConnectWithWPA) lässt sich kompilieren und hochladen, keine Fehlermeldung. Alle "Werte" (Passwort, SSID) stimmen. Der Arduino hat die neuste Firmware. Wenn das Programm dann aber hochgeladen ist, entsteht eine Endlosschleife, in der der Arduino immer wieder "Attempting to connect to WPA SSID: XXXXXX" ausgibt, er sich aber nicht mit dem WLAN verbindet, da er sonst "You´re connected with the network" ausgeben würde.

Danke schonmal für eure Hilfe

Mein Code:
/*
 This example connects to an unencrypted WiFi network.
 Then it prints the MAC address of the WiFi module,
 the IP address obtained, and other network details.


 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 */
#include <SPI.h>
#include <WiFiNINA.h>


#include "arduino_secrets.h" 
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID;        // your network SSID (name)
char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
int status = WL_IDLE_STATUS;     // the WiFi radio's status


void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // check for the WiFi module:
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }


  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Please upgrade the firmware");
  }


  // attempt to connect to WiFi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    status = WiFi.begin(ssid, pass);


    // wait 10 seconds for connection:
    delay(10000);
  }


  // you're connected now, so print out the data:
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();


}


void loop() {
  // check the network connection once every 10 seconds:
  delay(10000);
  printCurrentNet();
}


void printWifiData() {
  // print your board's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  Serial.println(ip);


  // print your MAC address:
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  printMacAddress(mac);
}


void printCurrentNet() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());


  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  printMacAddress(bssid);


  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);


  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption, HEX);
  Serial.println();
}


void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}
WLAN, Arduino, C (Programmiersprache)

ESP32 Code gut?

Hi, ich würde gerne fragen ob dieser code gut ist weil ich kenne mich nicht aus und da kommt immer dieser fehlercode:
'sendDiscordNotification' was not declared in this scope

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>


const char* ssid = "WLanSSID";
const char* password = "Password";


const char* webhook_url = "https://discord.com/api/webhooks/MyWebhook";



const int doorbellPin = 13;


bool doorbellState = LOW;


void setup() {
  Serial.begin(115200);
  

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbindung zum WLAN wird hergestellt...");
  }
  Serial.println("WLAN verbunden!");
  

  pinMode(doorbellPin, INPUT);
}


void loop() {
  doorbellState = digitalRead(doorbellPin);



  if (doorbellState == HIGH) {
    sendDiscordNotification();
    delay(5000);
  }


  delay(100);
}


void sendDiscordNotification() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;


    http.begin(webhook_url);


    http.addHeader("Content-Type", "application/json");



    String payload = "{\"content\": \"Es hat geklingelt!\"}";


    int httpResponseCode = http.POST(payload);


    if (httpResponseCode > 0) {
      String response = http.getString();
      Serial.println(httpResponseCode);
      Serial.println(response);
    } else {
      Serial.print("Fehler bei der HTTP Anfrage: ");
      Serial.println(httpResponseCode);
    }



    http.end();
  } else {
    Serial.println("WiFi Verbindung verloren");
  }
}
Arduino, Code, Programmiersprache, C (Programmiersprache), Arduino IDE

Meistgelesene Beiträge zum Thema C (Programmiersprache)