Problema if sotto platformio ide

Salve, ho questo codice che nel compilare mi segnala questo "Attenzione":

src\main.cpp: In function 'void loop()':
src\main.cpp:21:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if ((millis() - LED_TIME) > TIME_LOOP)

il codice completo è questo:

#include <Arduino.h>
#include <Wire.h>

#define PIN_LED 13

unsigned long LED_TIME;
int STATO_LED = LOW;
int TIME_LOOP = 2000;

void processor(int processorStato);

void setup()
{
  pinMode(PIN_LED, OUTPUT);
  Serial.begin(9600);
  LED_TIME = millis();
}

void loop()
{
  if ((millis() - LED_TIME) > TIME_LOOP)
  {
    STATO_LED = !STATO_LED;
    processor(!STATO_LED);
    LED_TIME = millis();
  }
}

void processor(int processorStato)
{
  if (processorStato == HIGH)
  {
    Serial.println("ON");
    digitalWrite(PIN_LED, HIGH);
  }
  else
  {
    Serial.println("OFF");
    digitalWrite(PIN_LED, LOW);
  }
}

Sotto "Arduino IDE" e sotto "Arduino cli" non segnalano nulla..

idea perché questo "Attenzione!" nell'if ?

Grazie mille e buon fine settimana.

risolto mettendo il TIME_LOOP in una definizione:

#define TIME_LOOP 2000

idea perché non vuole se gli metto un int TIME_LOOP = 2000;
Grazie mille e buona giornata.

A parte che la segnalazione è un warning, quindi un avviso, il che non significa necessariamente un errore, quindi il programma compila ugualmente, il motivo te lo dice esplicitamente: stai confrontando 2 tipi di numeri diversi, uno con segno e uno senza, e questo può dar luogo ad errori.
Avresti risolto anche mettendo TIME_LOOP come unsigned int, anzi, visto anche il nome tutto in maiusculo e l'uso meglio un const unsigned int.
Con l'IDE di Arduino per vedere tutti i warnig li devi abilitare esplicitamente nella configurazione.

Ciao, Ale.

ok ti ringrazio per la spiegazione..
ultima cosa, in un codice non mio.. mi da l'avviso qui:
TCCR0B = TCCR0B & B11111000 | B00000010; // D6 adn D6 PWM frequency of 7812.50 Hz

src\main.cpp: In function 'void setup()':
src\main.cpp:70:19: warning: suggest parentheses around arithmetic in operand of '|' [-Wparentheses]

mi dici come levarlo. Ripeto non è mio .. ma è un esempio che ho trovato per le PET-machine Bottle.

Non saprei nemmeno cosa fa quel : | che gli da noia.

EDIT: è un OR giusto?

grazie mille e buona giornata

Ecco un buon motivo per disabilitare i warning di default come hanno fatto su arduino IDE.

Ma hai dei problemi con l'inglese? Perchè anche in questo caso l'avviso mi sembra esplicito: ti invita a mettere tra parentesi gli operandi dell OR ( | ), dovrebbe essere così:

TCCR0B = (TCCR0B & B11111000) | B00000010;

perchè così è più chiaro come viene fatta l'operazione, cioè la precedenza degli operatori AND ( & ) e ( OR ). In pratica ti fa riflettere se è quello che vuoi veramente fare (e che il compilatore fa di default) o se intendevi fare diversamente, es. un AND del risultato dell OR, che nel caso sarebbe:

TCCR0B = TCCR0B & (B11111000 | B00000010);

Ciao, Ale.

Non sono d'accordo ... proprio per il motivo qui sopra descritto da ilguargua ... se un utente non conosce bene le priorità degli operatori binari (e l'OP non conosce neanche l'operatore |) è bene che il compilatore segnali il rischio di cose magari non volute :wink:

Guglielmo

Se non li conosce non deve usarli. Come vedi l'obbiettivo non è di comprendere ma di spegnere il warning e il miglior modo di farlo è quello di disabilitarli.
Certamente anche a me ha dato fastidio scoprire che i warning erano disabilitati, ma questo perché comprendo la differenza tra un errore e un warning cosa che non è minimamente compresa da un utente arduino comune.
Platform.IO non è piattaforma consigliata per gli utenti arduino.

Ciao.

E infatti lui mica li usa, si limita ad usare codice scritto da altri... :crazy_face:

Ciao, Ale.

2 Likes

allora il primo codice che ho messo.. lo scritto io. invece il secondo no.
A me piace Platformio IDE perché ho anche le ESP32.
Poi è più veloce ad compilare e caricare .. l'arduino IDE 2.1.1 per me è sempre in beta da quando uscii la prima volta.. A me mi fa i refresh ogni volta anche se vado ad apire etc.. Ed in più per le ESP32 non c'è la data upload .. ed ti consigliano di usare la 1.8.19 ma ormai troppo vecchia ed fa troppi aggiornamenti e si crasha.

Io ho voluto togliere quei avvisi perché un programmatore bravo il codice deve avere 0 avvisi 0 errori ed 0 errori di ortografia.

Per adesso abbiamo risolto il problema solo che mi manca la meccanica da stampare in 3D.
Saluti e buon sabato.

Questa è nuova, divertente, ma chi l'ha scritta?
Comunque come dicevo, se vuoi non fare comparire i warning basta disabilitarli.
Al contrario il buon programmatore abilità i warning, ma se non è capace di interpretare i messaggi allora non è buon programmatore.

Ma Nino non aver paura di tirare un calcio di rigore, non è mica da questi particolari che si giudica un giocatore, un giocatore lo vedi dal coraggio, dall'altruismo e dalla fantasia.

La Leva Calcistica Della Classe '68

PS: non è mica da questi particolari che si giudica un programmatore. :grinning:

Ciao.

Mmmm... hai qualche problema, io, che ci lavoro, uso SOLO la 1.8.19 anche con ESP32 e NON da alcun problema ... sicuro di stare utilizzando la versione corretta del link alle board ESP32? Perché è cambiata da un po' di tempo:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

... questa è quella corretta da cui poi installare la versione che vuoi della board ESP32.

Io che su macOS sono fermo, per ragioni di retrocompatibilità, a macOS 10.14.6, uso la versione della board ESP32 2.0.4 che è l'ultima che non richiede una versione di macOS superiore, però considera che loro sono arrivari alla board 2.0.11 :slight_smile:

si il problema era questo ricreata la portable e mettendo quello mi ha funzionato...
invece prima mettevo che vedendo era più corto.

fatto con quello .. me la installato ...
prima mi dava accesso negato etc...
grazie mille e buon lunedì.

ecco è questa che mettevo: https://dl.espressif.com/dl/package_esp32_index.json
nel libro di random nerd tutorials learn esp32.
con quella ha funzionato .. ora provo se data upload funziona.
grazie

Che un tempo era quella giusta, poi, vai a capire perché, hanno deciso di cambiare link :roll_eyes:

Guglielmo

Ma uno come faceva ad accorgersene?
Vabbè, l'ho aggiornato anche io.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.