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


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 14 maggio 17, 20:02   #21 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
E che ci sta a fare il forum
Ci sta a dare fastidio a te, ElNonino e ai prossimi che si aggiungeranno al thread
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 14 maggio 17, 23:21   #22 (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
Ci sta a dare fastidio a te, ElNonino e ai prossimi che si aggiungeranno al thread
Se rispondiamo è perche ci piace essere "infastiditi" di domande

Per il motore in DC non dovresti aver problemi a pilotarlo: in rete se cerchi trovi SICURAMENTE come fare e come collegarlo.
Ti basta scegliere uno dei pin rimasti liberi, dichiararlo come uscita e accenderlo/spegnerlo se vuoi un controllo ON/OFF con "digitalwrite" oppure con controllo PWM (da 0 a max con valori ntermedi) con la funzione "analogwrite".
Circuitalmente parlando basta un resistore tra il pin che hai scelto e la base del transistor (il valore non ricordo ma almeno di qualche Kohm), l'emettitore a massa e il collettore a uno dei due fili del motore, l'altro filo a Vcc.
Occhio che i 5v forniti dall'arduino mediante cavo usb potrebbero non bastare per il motore in DC in quanto hanno la carattetristica di assorbire molta corrente per lo spunto inziiale per cui potresti vedere l'arduino resettarsi all'avvio del motore stesso. Ti consiglio di caricare il firmware e poi alimentare la scheda con un'altra fonte di energia a 5V
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/

Ultima modifica di aero330 : 14 maggio 17 alle ore 23:30
aero330 non è collegato   Rispondi citando
Vecchio 14 maggio 17, 23:33   #23 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Dimenticavo...anche un diodo in antiparallelo al motore per evitare sovratensioni negative. Cerca in google e avrai le risposte, non sono a PC adesso
__________________
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 15 maggio 17, 10:38   #24 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Dimenticavo...anche un diodo in antiparallelo al motore per evitare sovratensioni negative. Cerca in google e avrai le risposte, non sono a PC adesso
Si infatti, ho trovato molti circuiti ma in sostanza é lo stesso, il modulo di energia aggiuntiva c'è l'ho e quindi, mi tocca solo mettermi sotto oggi pomeriggio
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 15 maggio 17, 14:23   #25 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Collegamenti completati e schema finalmente finito



Il problema ora sorge nel codice che, dal solo motore dc con monitor virtuale, invio 255 e parte, a 0 si ferma come dovrebbe essere, per cui qui tutto ok.

Ma visto che ora nel codice di certo non posso fare copia/incolla in questo modo:

Codice:
#include <Wire.h>
#include <DHT.h>
#include <RTClib.h>
#include <LiquidCrystal.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;
int motorPin = 7;

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__));

  pinMode(motorPin, OUTPUT);
  Serial.begin(9600);
  while (! Serial);
  Serial.println("Speed 0 to 255");
  Serial.println("But the advice 50 to 255. Because the minimum voltage required to start the motor is 50.");
  }
}

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(5000); 
  
  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(5000);

  lcd.clear(); //Pulisco lo schermo e ricomincio da capo

  if (Serial.available())
  {
    int speed = Serial.parseInt();
    if (speed >= 0 && speed <= 255)
    {
      analogWrite(motorPin, speed);
    }
  }

}
Bisognerebbe dichiarare la i giusto?

per cui, ignorantemente parlando se

i=30C°

i>30C° (motorPin, LOW)

if i<30C° (motorPin; speed)

Una cosa del genere giusto?
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 15 maggio 17, 16:11   #26 (permalink)  Top
User
 
L'avatar di andycar
 
Data registr.: 20-01-2006
Residenza: Altopascio
Messaggi: 2.370
Immagini: 20
Al posto di questo....
=======================================
if (Serial.available())
{
int speed = Serial.parseInt();
if (speed >= 0 && speed <= 255)
{
analogWrite(motorPin, speed);
}
}
========================================

metti...

=========================================
if (t > 30)
{
speed = 255 ;
}
else
{
speed = 0 ;
}
analogWrite(motorPin, speed);
=========================================
__________________
Io???
Io volo in giardino!!! (Cioè... ci volavo da giovane.)
http://www.youtube.com/results?searc...ype=&aq=-1&oq=
andycar non è collegato   Rispondi citando
Vecchio 15 maggio 17, 16:56   #27 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da andycar Visualizza messaggio
Al posto di questo....
=======================================
if (Serial.available())
{
int speed = Serial.parseInt();
if (speed >= 0 && speed <= 255)
{
analogWrite(motorPin, speed);
}
}
========================================

metti...

=========================================
if (t > 30)
{
speed = 255 ;
}
else
{
speed = 0 ;
}
analogWrite(motorPin, speed);
=========================================
Gentilissimo, immaginavo fosse una cosa del genere

ora provo e vi faccio sapere
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 15 maggio 17, 17:08   #28 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
No, purtroppo mi restituise questo errore

Codice:
 Arduino:1.8.2 (Windows 10), Scheda:"Arduino/Genuino Uno"

C:\Users\USER\Desktop\Progetti Arduino\Clima_serra\Clima_serra.ino: In function 'void loop()':

Clima_serra:85: error: 'speed' was not declared in this scope

 speed = 255 ;

 ^

Clima_serra:89: error: 'speed' was not declared in this scope

 speed = 0 ;

 ^

Clima_serra:91: error: 'speed' was not declared in this scope

 analogWrite(motorPin, speed);

                       ^

exit status 1
'speed' was not declared in this scope

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"
Il codice che ho modificato è questo:

Codice:
//Con l'aiuto di aero330 ed ElNonino, utenti di www.baronerosso.it
#include <Wire.h>
#include <DHT.h>
#include <RTClib.h>
#include <LiquidCrystal.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;
int motorPin = 7;

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__));
  }
  
  { 
  pinMode(motorPin, OUTPUT);
  } 
}

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(5000); 
  
  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(5000);

  lcd.clear(); //Pulisco lo schermo e ricomincio da capo

  if (t > 30)
{
speed = 255 ;
}
else
{ 
speed = 0 ;
}
analogWrite(motorPin, speed);

}
PS. Il pin 7 non è un digitalWrite?
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 15 maggio 17, 17:13   #29 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Devi dichiarare la variabile speed.
"
int speed;
"
o qualcosa di simile.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 15 maggio 17, 17:15   #30 (permalink)  Top
User
 
L'avatar di andycar
 
Data registr.: 20-01-2006
Residenza: Altopascio
Messaggi: 2.370
Immagini: 20
Non hai dichiarato la variabile: speed

Inserisci:

int speed = 0;

Prima del

void setup() {
__________________
Io???
Io volo in giardino!!! (Cioè... ci volavo da giovane.)
http://www.youtube.com/results?searc...ype=&aq=-1&oq=
andycar 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 08:58.


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