Progetto arduino (Neofita)

MidNight_

Utente Attivo
546
91
CPU
Ryzen 7 7700x
Dissipatore
DeepCool LT720
Scheda Madre
MSI B650 TOMAHAWK
HDD
Crucial P3 PLUS 1TB, WD Blue 1TB, Toshiba P300 3TB
RAM
CORSAIR Vengeance 32Gb 6000MHz
GPU
Asus Dual RTX 4070 Super
Monitor
Asus TUF VG32V, Acer KA240HQ
PSU
MSI A750GL
Case
LianLi Lancool III
OS
Windows10 pro
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?
 

enricovela

Utente Attivo
443
124
CPU
Ryzen 3600
Dissipatore
Thermaltake Water 3.0 240
Scheda Madre
MSI Gaming plus max x470
HDD
970 evo plus;Crucial MX500 1TB; GIGABYTE M.2 PCIe SSD; p300
RAM
16 GB @3000 MHz
GPU
quadro fx 3800
Audio
Audioengine D1
Monitor
LG 32QK500
PSU
Straight power 11 650 W
Case
Cooler Master MB510L
Net
FTTH Tim
OS
Pop!_OS
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.
 

MidNight_

Utente Attivo
546
91
CPU
Ryzen 7 7700x
Dissipatore
DeepCool LT720
Scheda Madre
MSI B650 TOMAHAWK
HDD
Crucial P3 PLUS 1TB, WD Blue 1TB, Toshiba P300 3TB
RAM
CORSAIR Vengeance 32Gb 6000MHz
GPU
Asus Dual RTX 4070 Super
Monitor
Asus TUF VG32V, Acer KA240HQ
PSU
MSI A750GL
Case
LianLi Lancool III
OS
Windows10 pro
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.
Post unito automaticamente:

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?
 

enricovela

Utente Attivo
443
124
CPU
Ryzen 3600
Dissipatore
Thermaltake Water 3.0 240
Scheda Madre
MSI Gaming plus max x470
HDD
970 evo plus;Crucial MX500 1TB; GIGABYTE M.2 PCIe SSD; p300
RAM
16 GB @3000 MHz
GPU
quadro fx 3800
Audio
Audioengine D1
Monitor
LG 32QK500
PSU
Straight power 11 650 W
Case
Cooler Master MB510L
Net
FTTH Tim
OS
Pop!_OS
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.
Post unito automaticamente:

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
 

MidNight_

Utente Attivo
546
91
CPU
Ryzen 7 7700x
Dissipatore
DeepCool LT720
Scheda Madre
MSI B650 TOMAHAWK
HDD
Crucial P3 PLUS 1TB, WD Blue 1TB, Toshiba P300 3TB
RAM
CORSAIR Vengeance 32Gb 6000MHz
GPU
Asus Dual RTX 4070 Super
Monitor
Asus TUF VG32V, Acer KA240HQ
PSU
MSI A750GL
Case
LianLi Lancool III
OS
Windows10 pro
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à!
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!