/*
Creare un programma in c per Wokwi per esp32 per 
a realizzazione dell'accensione di un led verde a pulsante 
premuto e al suo spegnimento e all'accensione di quello 
rosso a pulsante rilasciato. Pulsante in modo pullup.
*/
#include <pthread.h>
int ledrosso = 4;
int ledverde = 16;
int btn1 = 12;
pthread_t t_blink;// descrittori dei threads

// TASK 1
void *blink(void*){
  while (true) { // loop task 1
    digitalWrite(ledverde,!digitalRead(ledverde));
    delay(2000); 
  }
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  pinMode(ledrosso, OUTPUT);
  pinMode(ledverde, OUTPUT);
  pinMode(btn1, INPUT);
  pthread_create(&t_blink,NULL,blink,NULL);
}

void loop() {
  // task1. gestione pulsante
  //Fase1: lettura ingressi
  int val = !digitalRead(btn1);
  //Fase2: calcolo logica di comando
  if(val){// equivale val == HIGH o val == 1
    //Fase3: scrittura uscite
    digitalWrite(ledrosso, HIGH);
  }else{
    //Fase3: scrittura uscite
    digitalWrite(ledrosso, LOW);
  }
  delay(10); // this speeds up the simulation
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
r3:1
r3:2