Pages: 1 [2]   Go Down
Author Topic: info velocità di calcolo arduino per mappatura onda  (Read 1091 times)
0 Members and 1 Guest are viewing this topic.
piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
ma è possibile il conteggio alla rovescia di millis()

stefano

Code:
...
void setup()
{
    pinMode(PIN1, INPUT); digitalWrite(PIN1, HIGH);  // add more attachInterrupt code as required
  PCintPort::attachInterrupt(PIN1, sensore1, FALLING); 
    pinMode(PIN2, INPUT); digitalWrite(PIN2, HIGH);  // add more attachInterrupt code as required
  PCintPort::attachInterrupt(PIN2, sensore1, FALLING);
    pinMode(PIN3, INPUT); digitalWrite(PIN3, HIGH);  // add more attachInterrupt code as required
...
...
void loop()
{
  if (statosensore1==LOW)
{
  Serial.println(count[0]);
  Serial.println(tempo[0]);
  statosensore1=HIGH;
}
 if (statosensore2==LOW)
{
  Serial.println(count[1]);
 Serial.println(tempo[1]); 
  statosensore2=HIGH;
}
...

//---------------------------funzioni
void sensore1()
{
  statosensore1=LOW;
 count[0]++;
 tempo[0]=millis();
}
void sensore2()
{
  statosensore2=LOW;
  count[1]++;
  tempo[1]=millis();
}
void sensore3()
{
  statosensore3=LOW;
  count[2]++;
  tempo[2]=millis();
}
...

output collegato sul pin 2
Code:
1
11843
2
17006
3
23538

output collegato sul pin  3
Code:
4
-32104
5
-32089
6
-22914
7
-16458
8
-11318

output ricollegato sul pin 2
Code:
9
-9628
10
-9615
11
-3641

Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma tu nel setup hai assegnato la stessa funzione sensore1 a tutte e 6 le routine di gestione degli interrupt
Quote
pinMode(PIN1, INPUT); digitalWrite(PIN1, HIGH);  // add more attachInterrupt code as required
  PCintPort::attachInterrupt(PIN1, sensore1, FALLING); 
    pinMode(PIN2, INPUT); digitalWrite(PIN2, HIGH);  // add more attachInterrupt code as required
  PCintPort::attachInterrupt(PIN2, sensore1, FALLING);
ecc...

PS:
millis conta solo in avanti. O modifichi il contatore tu oppure usi una semplice sottrazione tipo 0-millis, così hai il conteggio alla rovescia
Logged


piacenza
Offline Offline
God Member
*****
Karma: 0
Posts: 589
prima della pazzia c'è la passione
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao
@leo grazie per la pazienza, ho capito l'errore sul conteggio, riguardo a millis() ho capito perchè conta alla rovescia avevo assegnato
Code:
int tempo[6]={0,0,0,0,0,0};
invece di questo
Code:
unsigned long tempo[6]={0,0,0,0,0,0};

stefano
« Last Edit: February 24, 2012, 02:03:54 am by stefa24 » Logged


Pages: 1 [2]   Go Up
Jump to: