Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - perchè questo sistema mi da il problema (1value required as left operation of assgnament)
Forum - C/C++ - perchè questo sistema mi da il problema (1value required as left operation of assgnament)

Avatar
sitox21 (Normal User)
Newbie


Messaggi: 1
Iscritto: 09/11/2020

Segnala al moderatore
Postato alle 20:05
Lunedì, 09/11/2020
/*
  LiquidCrystal Library - Hello World

Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.

This sketch prints "Hello World!" to the LCD
and shows the time.

  The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)

Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pulsante=8;
int led_verde=0;
int led_giallo=6;
int led_rosso=1;
int erogatore=10;
int sensore_livello=13;
int stato;
int stato_attesa;
int stato_emergenza;
int stato_erogazione;
long time;



void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("premere_pulsante");
  pinMode(pulsante,INPUT);
  pinMode(led_verde,OUTPUT);
  pinMode(led_giallo,OUTPUT);
  pinMode(led_rosso,OUTPUT);
  pinMode(erogatore,OUTPUT);
  pinMode(sensore_livello,INPUT);
  
  stato=0;
  stato_attesa=0;
  stato_emergenza=0;
  stato_erogazione=0;

  time=millis();

}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
  
  
if (stato=stato_attesa && digitalRead(sensore_livello)=0){
    stato=stato_emergenza;
    lcd.noDisplay();
    lcd.print("stato_emergenza");
    digitalWrite (led_rosso,HIGH);
    digitalWrite (led_giallo,LOW);
  }
  else if (stato=stato_emergenza && digitalRead(sensore_livello)=0){ //la macchina si spegne
    digitalWrite (led_giallo,LOW);
    digitalWrite (led_rosso,LOW);
    digitalWrite (led_verde,LOW);
  }
  else if (stato=stato_emergenza && digitalRead(sensore_livello)=1){
    stato=stato_attesa;
    lcd.noDisplay();
    lcd.print("stato_attesa");
    digitalWrite (led_giallo,HIGH);
  }
   else if (stato==stato_attesa && digitalRead(sensore_livello)=1){
    digitalWrite (erogatore,LOW);
    digitalWrite (led_giallo,HIGH);
   }
  else if (stato=stato_attesa && digitalRead(sensore_livello)=1 && digitalRead(pulsante)=1){
    stato=stato_erogazione;
    lcd.noDisplay();
    lcd.print("stato_erogazione");
     digitalWrite (led_verde,HIGH);
     digitalWrite (led_giallo,LOW);
    digitalWrite (erogazione,HIGH);
      }
  else if (stato=stato_erogazione && digitalRead(sensore_livello)=1  && millis()-time>=2000){
    stato=stato_attesa;
    lcd.noDisplay();
    lcd.print("stato_attesa");
    digitalWrite (led_giallo,HIGH);
    digitalWrite (erogazione,LOW);
    digitalWrite (led_verde,LOW);
  }

}

PM Quote
Avatar
Lucios (Normal User)
Newbie


Messaggi: 12
Iscritto: 19/10/2020

Segnala al moderatore
Postato alle 13:42
Martedì, 10/11/2020
Take a look at the if and else if conditions (=) is a mistake in C language

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1317
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 14:06
Martedì, 10/11/2020
Testo quotato

Postato originariamente da Lucios:

Take a look at the if and else if conditions (=) is a mistake in C language



Se scrivi: if (stato=stato_attesa && digitalRead(sensore_livello)=0), significa che vuoi assegare alla variabile stato il valore di stato_attesa, e a digitalRead(sensore_livello) il valore 0, e non è possibile assegnare il valore zero a digitalRead(sensore_livello) visto che è palesemente di lettura.

Per fare i confronti devi usare ==

if (stato==stato_attesa && digitalRead(sensore_livello)==0)

Correggi tutte le righe simili.

Ultima modifica effettuata da Carlo il 10/11/2020 alle 14:08


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:18
Martedì, 10/11/2020


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote