Progetto arduino (Neofita)

Pubblicità

MidNight_

Utente Attivo
Messaggi
546
Reazioni
91
Punteggio
51
Salve a tutti,
sono un neofita nel campo e ho voluto comprare lo starter kit di elegoo con arduino UNO. In questo kit ci sono abbastanza cose e ho provato un pò tutto. Ho deciso di fare una piccola cosa che mi sembra interessante. Collego l'arduino a un sensore di umidità a temperatura e faccio riportare i dati in tempo reale sul display lcd e metto il tutto all'interno del mio case in modo di sapere subito la temperature interna senza dover aprire alcun programma (e anche perchè mi piace troppo come cosa:lol:). Collegato tutto con una piccola board che era inclusa per fare il tutto il più compatto possibile, seguo una specie di tutorial per scrivere il codice, lo carico e funziona tutto perfettamente. Così però il display rimane acceso sempre e quindi volevo aggiungere un fotoresistore per far accendere il tutto solo quando c'è abbastanza luce e quindi quando accendo il case (ho dei led all'interno). Ecco il problema arriva qui: credo di aver fatto tutto giusto nella parte del circuito mettendo insieme il funzionamento del fotoresistore e quello del mio circuito. Credo di aver sbagliato nella parte del codice che vi scrivo qua sotto.
C:
#include <dht.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

dht DHT;

#define DHT11_PIN 7

const int sensorPin = 0;
const int ledPin = 9;
int lightCal;
int lightVal;

void setup(){
  Serial.begin(9600);
  pinMode (ledPin, OUTPUT);
  lightCal = analogRead(sensorPin);
  lcd.begin(16, 2);
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.print(DHT.temperature);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Humidity: ");
  lcd.print(DHT.humidity);
  lcd.print("%");
  delay(1100);

  lightVal = analogRead(sensorPin);
  int value = analogRead(A0);
  if (lightVal < lightCal - 50)
  {
    digitalWrite(9, HIGH);
  }
  else
  {
    digitalWrite(9, LOW);
  }
  }
Se qualcuno può aiutarmi sarebbe stupendo!

PS. Mi è sorto mentre scrivevo questo post un dubbio. Ovviamente mettendo il fotoresistore spegnerei solo il sensore della temperature e dell'umidità e il display, tenendo quindi la scheda arduino sempre accesa e collegata alla corrente (anche quando il pc è spento). Può essere un problema?
 
Sinceramente non ho capito quale sia il problema. Probabilmente che non si accende o non si spegne il display.

Comunque nella LiquidCrystal da te usata ci sono le funzioni per accendere e spegnere:

display()
noDisplay()

Poi io nell'if aggiungerei anche questa parte:

C++:
 int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.print(DHT.temperature);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Humidity: ");
  lcd.print(DHT.humidity);
  lcd.print("%");
  delay(1100);

Intutile farla eseguire se non deve essere visualizzata.

Invece, per quanto riguarda il tenerlo sempre accesso non ci sono problemi, ma hai pensato ad alimentare l'arduino con un molex dell'alimentatore? Eviti di affidare l'accensione e lo spegnimento al fotoresistore e arduino ed lcd saranno accessi solo a pc in funzione.
 
nvece, per quanto riguarda il tenerlo sempre accesso non ci sono problemi, ma hai pensato ad alimentare l'arduino con un molex dell'alimentatore?
Si ci ho pensato ma dovrei comprare un adattatore, no? Non credo sia possibile farlo così a meno che non stacco proprio i fili dal connettore molex.
--- i due messaggi sono stati uniti ---
Comunque nella LiquidCrystal da te usata ci sono le funzioni per accendere e spegnere:
Quindi dovrei far in modo che quando no c'è luce si esegua la funzione che fa spegnere il display, mentre quando c'è luce si esegua la funzione per farlo accendere. Giusto?
 
Si ci ho pensato ma dovrei comprare un adattatore, no? Non credo sia possibile farlo così a meno che non stacco proprio i fili dal connettore molex.
--- i due messaggi sono stati uniti ---

Si potresti anche modificare uno di quei adattori sata/molex che in genere vengono forniti con la scheda madre

Quindi dovrei far in modo che quando no c'è luce si esegua la funzione che fa spegnere il display, mentre quando c'è luce si esegua la funzione per farlo accendere. Giusto?

esattamente, anche la lettura del sensore .... io la farei avvenire quando c'è luce. Se non deve essere visualizzato, inutile farlo lavorare
 
Va bene grazie mille! Ora provo a scrivere il codice e se non funziona qualcosa, come probabilmente sarà, riscrivo qui. Grazie ancora della disponibilità e della velocità!
 
Pubblicità
Pubblicità
Indietro
Top