Arduino Uno: chi ci gioca? - BaroneRosso.it - Forum Modellismo

Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 12 maggio 17, 11:49   #1 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Mi sembra un progetto neanche troppo complicato, direi fattibilissimo anche per uno che non ci "smanetta"...tutto sta nel partire dagli esempi più semplici e stupidi per poi progredire in qualcosa di sempre più complesso.
Quindi prima leggere il sensore di temperatura, poi scrivere sul display, unire le cose e realizzare un termometro ecc ecc....
Per il cablaggio ci sono quasi, il problema rimane i codici separati da unire tutti in un solo codice e poi caricarlo su arduino. Non penso che sia possibile incollare i codici di orologio, termometro e ventole ad cazzum sul programma no?!
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 12 maggio 17, 12:38   #2 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da andore Visualizza messaggio
Per il cablaggio ci sono quasi, il problema rimane i codici separati da unire tutti in un solo codice e poi caricarlo su arduino. Non penso che sia possibile incollare i codici di orologio, termometro e ventole ad cazzum sul programma no?!
Basterebbe anche il semplice copia/incolla, ma bisogna farlo nei punti giusti e adattando in maniera opportuna il vecchio codice a quello nuovo perchè, tanto per fare un esempio, magari alcuni pin di INPUT/OUTPUT sono in comune ai singoli codici di termometro, orologio, ventole...
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 13 maggio 17, 09:27   #3 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Basterebbe anche il semplice copia/incolla, ma bisogna farlo nei punti giusti e adattando in maniera opportuna il vecchio codice a quello nuovo perchè, tanto per fare un esempio, magari alcuni pin di INPUT/OUTPUT sono in comune ai singoli codici di termometro, orologio, ventole...
Infatti era proprio quello che intendevo dire.

Comunque ora mi dedico un attimo a studiare bene il circuito e poi passo alla parte codice

Appena finisco posto uno sketch così magari mi correggete se ho sbagliato qualcosa
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 13 maggio 17, 14:14   #4 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Ok tutto funziona a meraviglia; orologio e temperatura

ora viene il bello!

Come faccio ad unire i due codici?

Codice:
#include <DHT.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include "DHT.h"
#define DHTPIN 8
// 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11
// dht11 è il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// connessione display (pin)
char buffer1[20];
char buffer2[20];
RTC_DS1307 RTC;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int setpin = 6;
boolean statepin = 0;
 
void setup() {
lcd.begin(16, 2);
// imposto il tipo di display (colonne, righe)
lcd.setCursor(0,0);
lcd.print("Temperatura");
lcd.setCursor(0,1);
lcd.print("Umidita'");
lcd.setCursor(15,0);
lcd.print("C");
lcd.setCursor(15,1);
lcd.print("%");

pinMode (6, INPUT);
  digitalWrite (6, HIGH);
  Wire.begin();
  RTC.begin();
  lcd.begin(16, 2);
  if (! RTC.isrunning()) {
    RTC.adjust(DateTime(__DATE__, __TIME__));

}
void loop() {
int t = dht.readTemperature();
int h = dht.readHumidity();
// posiziono il cursore alla colonna 12 e riga 0
lcd.setCursor(12, 0);
lcd.print(t);
lcd.setCursor(12, 1);
lcd.print(h);

 statepin = digitalRead (setpin);
  if (statepin == LOW)
  {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  DateTime now = RTC.now();
  sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  lcd.setCursor(0,0);
  lcd.print( buffer1 );
  sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
  lcd.setCursor(0,1);
  lcd.print( buffer2 );
  delay(1000);

}


void setup () {
  
  }
}
In questo modo e dannatamente e ignorantissimamente SBAGLIATO
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 13 maggio 17, 14:51   #5 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Prova questo...nel tuo originale c'erano alcune cose che non andavano: doppia definizione della funzione LiquidCrystal lcd, doppio lcd.begin(16,2) e la doppia definizione di void setup() alla fine che non c'entra nulla)

Codice:
#include <DHT.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTPIN 8   // 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11  // dht11 è il tipo di sensore che uso

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // connessione display (pin)

char buffer1[20];
char buffer2[20];

RTC_DS1307 RTC;

const int setpin = 6;
boolean statepin = 0;
int t;
int h;

void setup() {
	lcd.begin(16, 2); // imposto il tipo di display (colonne, righe)
	lcd.setCursor(0,0);
	lcd.print("Temperatura");
	lcd.setCursor(0,1);
	lcd.print("Umidita'");
	lcd.setCursor(15,0);
	lcd.print("C");
	lcd.setCursor(15,1);
	lcd.print("%");

	pinMode (6, INPUT);
	digitalWrite (6, HIGH);

	Wire.begin();
	RTC.begin();

	if (! RTC.isrunning()) {
	RTC.adjust(DateTime(__DATE__, __TIME__));
	}
}

void loop() {
	
	t = dht.readTemperature();
	h = dht.readHumidity();  // posiziono il cursore alla colonna 12 e riga 0
	lcd.setCursor(12, 0);
	lcd.print(t);
	lcd.setCursor(12, 1);
	lcd.print(h);

	statepin = digitalRead (setpin);
	
	if (statepin == LOW)
	{
		RTC.adjust(DateTime(__DATE__, __TIME__));
	}
	
	DateTime now = RTC.now();
	sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
	lcd.setCursor(0,0);
	lcd.print( buffer1 );
	sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
	lcd.setCursor(0,1);
	lcd.print( buffer2 );
	delay(1000);
}
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 13 maggio 17, 16:15   #6 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Prova questo...nel tuo originale c'erano alcune cose che non andavano: doppia definizione della funzione LiquidCrystal lcd, doppio lcd.begin(16,2) e la doppia definizione di void setup() alla fine che non c'entra nulla)

Codice:
#include <DHT.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTPIN 8   // 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11  // dht11 è il tipo di sensore che uso

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // connessione display (pin)

char buffer1[20];
char buffer2[20];

RTC_DS1307 RTC;

const int setpin = 6;
boolean statepin = 0;
int t;
int h;

void setup() {
	lcd.begin(16, 2); // imposto il tipo di display (colonne, righe)
	lcd.setCursor(0,0);
	lcd.print("Temperatura");
	lcd.setCursor(0,1);
	lcd.print("Umidita'");
	lcd.setCursor(15,0);
	lcd.print("C");
	lcd.setCursor(15,1);
	lcd.print("%");

	pinMode (6, INPUT);
	digitalWrite (6, HIGH);

	Wire.begin();
	RTC.begin();

	if (! RTC.isrunning()) {
	RTC.adjust(DateTime(__DATE__, __TIME__));
	}
}

void loop() {
	
	t = dht.readTemperature();
	h = dht.readHumidity();  // posiziono il cursore alla colonna 12 e riga 0
	lcd.setCursor(12, 0);
	lcd.print(t);
	lcd.setCursor(12, 1);
	lcd.print(h);

	statepin = digitalRead (setpin);
	
	if (statepin == LOW)
	{
		RTC.adjust(DateTime(__DATE__, __TIME__));
	}
	
	DateTime now = RTC.now();
	sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
	lcd.setCursor(0,0);
	lcd.print( buffer1 );
	sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
	lcd.setCursor(0,1);
	lcd.print( buffer2 );
	delay(1000);
}
OK ti ringrazio e sto cominciando a capirci qualcosa, di fatti avevo notato degli errori grossolani ma, il problema rimane sul fatto che ora, sul display però e tutto accavallato come da foto come faccio a intervallare ora e temperatura in maniera ciclica?


Imgur: The most awesome images on the Internet

Altra domanda: per azionare il motore DC ho a disposizione due tipi di transistor NPN ovvero (PN2222 e S8050) quale dovrei usare?
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 13 maggio 17, 17:09   #7 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Con il seguente codice visualizzi alternativamente temperatura/umidità e ora/data ogni 0,5s....cambia il valore del delay a tuo piacere.
*nota che ho spostato alcune righe di codice dal setup al loop per riscrivere tutte le volte temp/umidità

Codice:
#include <DHT.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTPIN 8   // 8 è il pin di Arduino a cui collego il sensore di temperatura
#define DHTTYPE DHT11  // dht11 è il tipo di sensore che uso

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // connessione display (pin)

char buffer1[20];
char buffer2[20];

RTC_DS1307 RTC;

const int setpin = 6;
boolean statepin = 0;
int t;
int h;

void setup() {
	lcd.begin(16, 2); // imposto il tipo di display (colonne, righe)
	lcd.setCursor(0,0);

	pinMode (6, INPUT);
	digitalWrite (6, HIGH);

	Wire.begin();
	RTC.begin();

	if (! RTC.isrunning()) {
	RTC.adjust(DateTime(__DATE__, __TIME__));
	}
}

void loop() {
	
	
	t = dht.readTemperature();
	h = dht.readHumidity();  // posiziono il cursore alla colonna 12 e riga 0
	
	lcd.print("Temperatura");
	lcd.setCursor(0,1);
	lcd.print("Umidita'");
	lcd.setCursor(15,0);
	lcd.print("C");
	lcd.setCursor(15,1);
	lcd.print("%");
	lcd.setCursor(12, 0);
	lcd.print(t);
	lcd.setCursor(12, 1);
	lcd.print(h);
	
	delay(500);	
	
	lcd.clear();   //pulisce tutto lo schermo e cursore in alto a sinistra (0,0)
	
	statepin = digitalRead (setpin);
	if (statepin == LOW)
	{
		RTC.adjust(DateTime(__DATE__, __TIME__));
	}
	
	DateTime now = RTC.now();
	sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
	lcd.setCursor(0,0);
	lcd.print( buffer1 );
	sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
	lcd.setCursor(0,1);
	lcd.print( buffer2 );

	delay(500);

	lcd.clear();
}
Per i transistor è indifferente, ho controllato i datasheet e sono pressochè identici
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
arduino uno e ..... FLYTS Circuiti Elettronici 3 23 settembre 14 14:50



Tutti gli orari sono GMT +2. Adesso sono le 16:04.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002