Show Posts
Pages: 1 ... 8 9 [10] 11 12 ... 20
136  International / Software / Prestazioni Arduino: Commentare Serial.begin(). on: July 21, 2012, 08:01:02 am
Ciao a tutti, volevo alcuni chiarmenti in merito al Serial.begin().
E' chiaro che il Serial.print sono un'ottimo metodo per debuggare qualsiasi sketch, ma al termine del progetto, se tutto funzione correttamente, e' più opportuno commetare semplicemente il Serial.begin(), oppure provvedere a commetare tutti i serial.print che ci sono nel codice? Nel primo caso ci si sbrigherebbe prima quando i serial.print sono un centinaio! smiley
In termini di prestazioni di arduino si arriverebbe allo stesso risultato o comunque serial.print non commentati nello sketch influenzerebbero comunque le prestazioni?

Grazie mille!
137  International / Generale / Re: libreria leOS: task e valore ritornato, chiarimenti. on: July 15, 2012, 03:15:22 am
Si nel task accedo alla capSense per leggere il valore e, a seconda del valore, incrementare o decrementare la variabile globale per lo switch delle scelte. Se il capSense usa il timer sinceramente non lo so... smiley-red Come posso capirlo?

Grazie
138  International / Generale / Re: libreria leOS: task e valore ritornato, chiarimenti. on: July 14, 2012, 04:13:13 am
Effettivamente non ho mai letto "ritornano" , chiedo perdono! smiley

Comunque stavo provando a fare come hai detto tu, ma ho un problema, ecco lo sketch:

Code:
//libreria leos
#include "leOS.h"
leOS myOS; //creo nuovo os

//SENSORE CAPACITIVO
#include <CapSense.h>
CapSense   capacitiveSensor = CapSense(4,2);
//variabile gloabale
int scelta = 1;



void setup()
{
Serial.begin(9600);
//aggiugo task per os
myOS.begin();
myOS.addTask(menuControl, 600);
}

void loop()
{
Serial.println("Sono nel loop");
delay(500);
}


//*************************************************************
//*************************************************************
void menuControl()
//*************************************************************
//*************************************************************
{
long start = millis();
 long valore =  capacitiveSensor.capSense(30);
  Serial.print("VALORE SENSORE CAPACITIVO");
  Serial.println(millis() - start);
  Serial.print("SCELTA");
  Serial.println(scelta); 
  if (valore > 100)
  {
    scelta = scelta + 1;
    delay(2000);
   
  }
 
  if (scelta > 2)
  {
    scelta = 1;
    delay(2000); 
}


}


Praticamente è come se il task non eseguisse il compito, in questo caso dovrebbe ad esempio stamparmi il valore del sensore e la scelta, ma non accade, mi stampa sempre "sono nel loop".
Se invece tolgo:
Code:
long valore =  capacitiveSensor.capSense(30);
con i relativi if allora il tutto viene stampato (cioè in effetti solo scelta e valore, che ovviamente vale 0).

Dove sbaglio? smiley

Grazie
139  International / Generale / libreria leOS: task e valore ritornato, chiarimenti. on: July 13, 2012, 02:42:22 pm
Ciao a tutti, premetto che so già che per quello che intendo fare potrei utilizzare la funzione mills(), ma siccome è la prima volta che mi trovo davanti a problemi di multitasking vorrei chiarire un po le idee. Spiego al situazione:

Mi trovo alle prese con un sensore capacitivo, tramite questo sensore capacitivo, dovrei cambiare le "modalità" di una matrice led. Quindi una cosa del genere

Code:
if (capsenseRead > 10)
{
modalita=modalita+1;
}

switch (modalita)

case 1:
..
break;

case 2:
...
break;

Quindi poi fino a quando modalità è ugulae a 1 esegui sempre 1. Quindi qui per eseguire la lettura potrei utilizzare le funzioni mills(). Essendo che non è ho mai usate, dovrei documetarmi. Ma siccome un paio di settimane fa ho pravato la libreria leOS mi cheidevo se si potesse fare tramite leOS.

In particolare, ho provato gli esempi della libreria, e ho visto che ogni task aggiunto è una funzione di tipo void() quindi esegue l'operazioe ma non ritorna nessun valore.
Potrei utilizzare leOS per eseguire la lettura del capsese?
del tipo:

Code:
leos myos;
myos.addtask(leggiCapSense, 500);


quindi leggicapsense ognu 500ms

e qui il problema, potrei eseguire leggiCapSense per incrementare il contatore "modalità" e poi ritornare questo contatore ed eseguire lo switch nel loop() ?!

mi serivirebbe quindi ritornare un int, cosa che alemno dagli esempi non mi pare sia possibile fare con i task di leOS.

Se così fosse dovrò documentarmi un po su mills() e multitasking con arduino, intanto se funziona con leOS sarebbe meglio, molto più semplice!:)

Grazie a tutti!


140  International / Generale / Re: Come spiegate questo: IDE 0022 costrutto if non va?!? on: July 11, 2012, 06:32:27 am
Ecco qui, intanto vado alla ricerca dell'errore anche io, perchè ho provato un nuovo sketch con un controllo semplice e funziona, quindi non è l'if che non va..xD:

Code:
//LIBRERIA INCLUSE
#include <Wprogram.h>
#include <Wire.h>
#include <DS1307.h>

//variabili per la data e l'ora

int anno; //variabile anno
int mese; //variabile mese
int giorno; //variabile giorno
int ore; //variabile ore
int minuti; //variabile minuti
int secondi; //variabile secondi


//*************************************************************
//*************************************************************
void setup()
//*************************************************************
//*************************************************************
{

Serial.begin(9600);

//Setto orologio
RTC.stop(); 
RTC.set(DS1307_HR, 11);   
RTC.set(DS1307_MIN, 45);   
RTC.start();

Serial.println("Orologio Avviato");
leggiOra();

}


//*************************************************************
//*************************************************************
void loop()
//*************************************************************
//*************************************************************
{
  //Funzione che legge l'orario
  leggiOra();
  //Funzione che converte l'orario
  qlockTwoConverter(ore, minuti);
  delay(1000);
}

//*************************************************************
//*************************************************************
void leggiOra()
//*************************************************************
//*************************************************************
{
anno = RTC.get(DS1307_YR,true);
mese = RTC.get(DS1307_MTH,false);
giorno = RTC.get(DS1307_DATE,false);
ore = RTC.get(DS1307_HR,false);
minuti = RTC.get(DS1307_MIN,false);
secondi = RTC.get(DS1307_SEC,false);
}










//****************************************************
//****************************************************
void qlockTwoConverter(int ore, int minuti)
//****************************************************
//****************************************************
{
int meno = 0;
int piu = 0;
int prova = 30;
Serial.print("ecco i minuti: ");
Serial.print(minuti);

//inizializzo le variabili a 0
int newMinuti = 0;
int ledMinuti = 0;

int soglia = 34;

//****se i minuti sono > di 34. Es: 6:53*****\\\
if (prova > soglia)
{
Serial.println("se esci sei un coglione");
}


meno = 0;
piu = 1;
Serial.println("ho settato meno a 0 e piu a 1");

/*
//****se i minuti sono < di 34. Es: 6:23*****\\\
 if (minuti < 34)
{
piu = 1;
meno = 0;
}*/



if(meno == 1)
{
  piu = !piu;
  Serial.println("Sono in meno qui dentro");
  ore = ore+1;
  minuti = 60 - minuti;
 
  //se i minuti sono meno di 10
  if(minuti < 10)
  {
   newMinuti = 5;
   ledMinuti = minuti - newMinuti;
  }
 
  //se i minuti sono più di 10
  if(minuti > 10)
  {
  ledMinuti = minuti % 10;
 
 
  //se i led accesi corrispondono a 5 allora saranno = a zero
  if(ledMinuti == 5)
  {
  ledMinuti = 0;
  }
 
 
 
  newMinuti = minuti - ledMinuti;
 
}
}


else if(piu == 1)
{
 
  meno = !meno;
   ore = ore;
  Serial.println("Sono in + qui dentro");
ledMinuti = minuti % 10;
//se i led accesi corrispondono a 5 allora saranno = a zero
  if(ledMinuti == 5)
  {
  ledMinuti = 0;
  }
 
newMinuti = minuti - ledMinuti;
}


//qui controlo se accendere "è" oppure "sono le"
if (ore==1)
{
//accendi "è"
Serial.print("E' ");
}

if(ore > 1)
{
//accendi "sono le"
Serial.print("Sono le ");
}



//switch-case dell ore;
switch(ore) {
  case 1:
  //accendi "l'una"
  Serial.print("l'una");
  break;
 
 case 2:
 //accendi "due"
Serial.print("due");
break;

 case 3:
 //accendi "tre"
Serial.print("tre");
break;
 case 4:
 //accendi "quattro"
Serial.print("quattro");
break;
 case 5:
 //accendi "cinquee"
Serial.print("cinque");
break;
 case 6:
 //accendi "sei"
Serial.print("sei");
break;
 case 7:
 //accendi "sette"
Serial.print("sette");
break;
 case 8:
 //accendi "otto"
Serial.print("otto");
break;
 case 9:
 //accendi "nove"
Serial.print("nove");
break;
 case 10:
 //accendi "dieci"
Serial.print("dieci");
break;
 case 11:
 //accendi "undici"
Serial.print("undici");
break;
 case 12:
 //accendi "dodici"
Serial.print("dodici");
break;
}



//ora controllo se devo accendere la scritta "e" oppure "meno"
if(piu)
{
//accendi "e"
Serial.print(" e ");
}

else
{
//accendi "meno"
Serial.print(" meno ");
}


//ora effettuo lo switch dei minuti
switch(newMinuti) {
 
  case 5:
  //accendi "cinque"
  Serial.print("cinque");
  break;
 
  case 10:
  //accendi "dieci"
  Serial.print("dieci");
  break;
 
  case 15:
  //accendi "un quarto"!
  Serial.print("un quarto");
  break;
 
  case 20:
  //accendi "venti"
  Serial.print("venti");
  break;
 
  case 25:
  //accendi "venticinque"
  Serial.print("venticinque");
  break;
 
  case 30:
  //accendi "mezza"
  Serial.print("mezza");
  break;
 
}


Serial.print(" + ");


//ora effettuo lo switch dei led da accendere
switch(ledMinuti) {
 
 
  case 0:
  //non accendo neanche un led
  Serial.print("zero led accesi");
  break;
 
   case 1:
  //accendo 1 led
  Serial.print("1 Led acceso");
  break;
 
   case 2:
  //accendo 2 led
  Serial.print("2 Led accesi");
  break;
 
   case 3:
  //accendo 3 led
  Serial.print("3 Led accesi");
  break;
 
   case 4:
  //accendo 4 led
  Serial.print("4 Led accesi");
  break;
 
  }
 
 Serial.println();
 
}


Grazie!
141  International / Generale / Come spiegate questo: IDE 0022 costrutto if non va?!? on: July 11, 2012, 06:13:38 am
Ciao, sono alle prese con un problema strano..
Sto utilzzando l'IDE 0022, mi trovo con una funzione che riceve in ingresso ore e minuti di un ds1307, per un motivo, mi serve fare un controllo sui minuti in ingresso, ho creato quindi un if del genere:

Code:
//****************************************************
//****************************************************
void qlockTwoConverter(int ore, int minuti)
//****************************************************
//****************************************************
{
int meno = 0;
int piu = 0;
Serial.println("ecco i minuti");
Serial.print(minuti);

//inizializzo le variabili a 0
int newMinuti = 0;
int ledMinuti = 0;
int soglia = 34;
int prova = 10;

if (meno == 0)
{
Serial.println("Ciao meno = 0");
}

//****se i minuti sono > di 34. Es: 6:53*****\\\
if (prova > soglia)
{
meno = 1;
piu = 0;
Serial.println("ho settato meno a 1 e piu a 0");
}

meno = 0;
piu = 1;


...



nel codice potete vedere i vari tentativi che ho fatto, come ad esempio dichiarare una variabile prova che vale 10, e fare un controllo tipo:

Code:
if (prova > soglia)
{
.. le varie printf
}


insomma su terminale, mi viene stampato tutto quello che vedete, è come se il controllo dell'if risulta vero, cosa che non dovrebbe essere poichè 10 non è maggiore di 34! O.o

Qualcuno ha avuto un problema simile? Suggerimenti?

Grazie in anticpo

142  International / Generale / Re: DS1307 - problema lettura orario on: July 10, 2012, 11:03:52 am
Ok, con l'IDE 0022 e la libreria RTClib caricando lo sketch di esempio ds1307 la seriale mi restituisce l'ora come si deve! smiley
La domanda quindi è: per quale motivo questa libreria funziona e quella che vi ho detto prima continua a darmi quell'errore?

Grazie mille!
143  International / Generale / DS1307 - problema lettura orario on: July 10, 2012, 04:00:37 am
Ciao a tutti, sono alle prese con un modulo ds1307, precisamente questo:
http://www.ebay.it/itm/Arduino-DS1307-RTC-KIT-PCB-Real-Time-Clock-For-PIC-ARM-AVR-DSP-/280917352316?pt=Componenti_elettronici_attivi&hash=item4167fa9f7c#ht_2272wt_1400

Come IDE sto utilizzando il 0022 e la libreria è DS1307.h

Ho caricato lo sketch di esempio, questo:

Code:
/*Reads the value from a Real Time Clock (RTC) DS1307 and displays it in the serial monitor
 *
 *Created by D. Sjunnesson 1scale1.com d.sjunnesson (at) 1scale1.com
 *
 *Created with combined information from
 *http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1180908809
 *http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1191209057
 *
 *
 *Big credit to  mattt (please contact me for a more correct name...) from the Arduino forum
 *which has written the main part of the library which I have modified
 *
 */

#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

  RTC.stop();
  RTC.set(DS1307_SEC,1);        //set the seconds
  RTC.set(DS1307_MIN,23);     //set the minutes
  RTC.set(DS1307_HR,12);       //set the hours
  RTC.set(DS1307_DOW,4);       //set the day of the week
  RTC.set(DS1307_DATE,5);       //set the date
  RTC.set(DS1307_MTH,3);        //set the month
  RTC.set(DS1307_YR,9);         //set the year
  RTC.start();

}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,true));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,true));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,true));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,true));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,true)); //read year
  Serial.println();

  delay(1000);

}

Il problema è che lo sketch dovrebbe scrivermi su seriale l'ora corrente partendo da quella impostata nello sketch giusto?

Bene aprendo la comunicazione seriale ecco quello che mi esce:

Code:
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
0:0:0     0/0/2000
...


e così sempre, è come se ogni secondo che conta non riuscisse a portare il conto. Come è possibile?

Una cosa xò nel modulo RTC il pin denominato "SQW" dove va collegato, su altri schemi è come se rimane scollegato è giusto così?

Grazie a tutti!
144  International / Generale / Caratteri e numeri con matrice LED on: July 08, 2012, 03:41:26 am
Ok, ho cablato un'intera matrice, i led si accendono tutti, l'intensità la setto senza problemi. Ho visto la libreria, ledcontrol.h e ho rivisto un po le funzioni, setled, setrow, setcolumn.. Ora però ho cercato un po in rete e sul forum ma non sono riuscito a trovare niente.. Volendo creare con i led numeri, lettere dell'alfabeto, come fare? Si potrebbe magari creare tramite  istruzioni del tipo setrow e utilizzare il riferimento in binario per far accendere determinati led, fare così per tutte le righe e creare in questo modo ad esempio la lettera "A". Ma sarebbe una cosa troppo ostica! O.o
Chiedo quindi qual'è la tecnica utilizzata per la creazione di "caratteri" tramite matrice led, o se esiste una libreria alternativa apposita.

Grazie a tutti
145  International / Generale / Re: Controllo matrice LED 11x10, consigli! on: July 07, 2012, 12:34:36 pm
Ok ci siamo, sono riuscito a cablare l'intera matrice, i led si accendono tutti, l'intensità la setto senza problemi. Ho visto la libreria, ledcontrol.h e ho rivisto un po le funzioni, setled, setrow, setcolumn.. Ora però ho cercato un po in rete e sul forum ma non sono riuscito a trovare niente.. Volendo creare con i led numeri, lettere dell'alfabeto, come fare? Si potrebbe magari creare tramite  istruzioni del tipo setrow e utilizzare il riferimento in binario per far accendere determinati led, fare così per tutte le righe e creare in questo modo ad esempio la lettera "A". Ma sarebbe una cosa troppo ostica! O.o
Chiedo quindi qual'è la tecnica utilizzata per la creazione di "caratteri" tramite matrice led, o se esiste una libreria alternativa apposita.

Grazie a tutti
146  International / Generale / Re: Questo è il progetto che ho realizzato per la maturità on: July 01, 2012, 02:53:43 am
Davvero ben realizzato! Complimenti!
147  International / Generale / Re: Controllo matrice LED 11x10, consigli! on: June 30, 2012, 08:54:59 am
Ciao a tutti, sto seguendo lo schema che ho allegato per creare la matrice del qlocktwo. Lo schema è preso dal progetto di mnicolato.
Sono arrivato a cablarlo intermante solo che ora, a differenza del progetto originale io vorrei aggiugnere altri 4 led per contare i minuti.
Volevo appunto sapere se continuando come ho modificato lo schema allegato andavo bene oppure devo disporre gli altri 4 led diversamente?
Altra cosa, volendo aggiungere un ulteriore led RGB (negativo comune + 3 positivi per ogni colore) allo schema, potrei proseguire allo stesso modo?

Grazie mille!

Nicola
148  International / Generale / Re: Termometro RGB, Kelvin to RGB? on: June 27, 2012, 01:11:37 pm
http://nwfsimages.s3.amazonaws.com/school/course/102/352.jpg

Come puoi vedere la scala parte da 1000 K e arriva a 8000 K, e va da un rosso accesso ad un blu. Questa è una delle tabelle, ma altre magari ti danno il valore preciso R G B del blu.

Il mínimo valore nella tabella è 1000 (kelvin)

1000 kelvin = 726,85 Celsius

Quindi potrei rappresentare tramite quella scala minimo 726 gradi  smiley-eek-blue che mi sembra decisamente troppo!

Volevo quindi sapere se esiste appunto una tabella di conversione tra gradi celsius a colori rgb

Grazie
149  International / Generale / Termometro RGB, Kelvin to RGB? on: June 27, 2012, 12:43:08 pm
Ciao a tutti, poco fa mi sono imbattuto in un'immagine simile a questa:

http://img.diytrade.com/cdimg/1113020/12701342/0/1273025995/Temperature_Sensitive_LED_RGB_Color_changing_Shower_head_CHT-1103.jpg

Bene smiley , lasciando perdere la doccia, si tratta quindi di led rgb che cambiano colore in base alla temperatura, es:
<= 32° ---> luce verde.

Facendo un po di ricerche ho trovato che effettivamente esiste una tabella di conversione tra gradi Kelvin e colori RGB.
Ora se non sbaglio 0 gradi celsius (c°) valgono 272 gradi Kelvin giusto?
Le tabelle di conversione che ho trovato però, partono tutti da 1000 gradi Kelvin, e danno i valori dei rispettivi R G B.

Volendo quindi rappresentare con un sensore di temperatura, un rispettivo colore con un led RGB come dovrei procedere se vorrei rappresentare ad esempio temperature nel range -20 c° a 50 c°.

Qualcuno di voi ha avuto già a che fare con conversioni tipo c° --> RGB ?

Grazie a tutti

Nicola
150  International / Generale / Re: Problema LED, IR o cosa? on: June 26, 2012, 01:23:06 pm
Fatto la prova con la resistenza da 100 Ohm, non si vede nulla, mentre con il cellulare naturalmente la luce emessa viole è leggermente più forte rispetto a prima. Insomma confermato, si tratta di LED IR.
decisamente sì, controlla bene il link originale d'acquisto e contatta il venditore per la sostituzione, se vuoi farla.

Appana mandata la mail con tanto di foto e riferimenti a questa discussione per le dimostrazioni!:)
Speriamo bene!

Grazie.
Pages: 1 ... 8 9 [10] 11 12 ... 20