Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #15 on: June 21, 2010, 12:14:22 pm » |
@ uccio:
Mi interessa riuscire a contare il numero di impulsi, il tempo sarà una variabile fissa di 1 secondo, rapportandoli otterrò la velocità.
@ brainbooster:
Il sensore si è un reed, quello dei tachimetri da bicicletta, ma al momento ponticello semplicemente ai 5 volt il pin d'ingresso, putroppo non riesco a contare solamente l'impulso, non c'entra l'interfaccia, in seriale fa lo stesso, se do l'impulso, aggiunge 1 al registro finchè l'imput non torna a LOW, e quindi escono valori nell'ordine delle decine anche se l'impulso dura pochissimo...
Grazie mille agli utenti che mi stanno aiutando.
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #16 on: June 21, 2010, 12:24:18 pm » |
forzalo tù a low dopo l'incremento di 1
|
|
|
|
« Last Edit: June 21, 2010, 12:25:05 pm by brainbooster »
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #17 on: June 21, 2010, 12:29:36 pm » |
Buona idea, ma sembra quasi che ci sia un tempo fisso per arduino, e quindi anche forzando lo stato LOW ci mette del tempo...
void setup() { pinMode(sensorepin,INPUT); lcd.begin(16, 2); lcd.print(" -DUCATI-"); delay(1000); lcd.clear(); }
void loop() { abba = digitalRead(sensorepin); if(abba == HIGH) { giri2++; } else { giri2 = giri2; }
if(giri2 > 0) { abba = LOW; } lcd.setCursor(0, 0); lcd.print("Speed"); lcd.setCursor(0, 1); lcd.print(giri2); lcd.print(" Km/h "); delay (5); }
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #18 on: June 21, 2010, 12:35:52 pm » |
non intendevo quello, e poi a che serve specificare la clausola else? P.S. nel codice ci sono errori
|
|
|
|
« Last Edit: June 21, 2010, 12:41:45 pm by brainbooster »
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #19 on: June 21, 2010, 12:47:52 pm » |
L'else era rimasto da una prova iniziale... ovviamente non funzionava  Cosa intendevi per forzare il Low? La compilazione è corretta e gira su arduino attualmente.
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #20 on: June 21, 2010, 12:54:58 pm » |
errori di logica, c'è da studiare un pò...
|
|
|
|
|
Logged
|
|
|
|
|
|
|
 |
« Reply #21 on: June 21, 2010, 12:59:00 pm » |
@brainbooster: non è solo un problema di errori di logica, nella strada intrapresa l'importanza della libreria che gestisce il display è fondamentale in quanto apporta ritardi che sono evitabili soltanto mediante l'utilizzo dell'interrupt di un timer... (chissà quante volte dovrò ripeterlo ancora in questo forum!)
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #22 on: June 21, 2010, 01:05:14 pm » |
giusto kokiua ma il suo problema è a monte (non conta gli impulsi), io prima, non a caso, gli ho suggerito di "dividere et imperare" provando a scriversi un semplice contatore che mostrasse l'incremento. 
|
|
|
|
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #23 on: June 21, 2010, 01:10:11 pm » |
Brain son 2 giorni che appena stacco da lavoro ci rimembro sopra ma non vengo a capo di niente... Questi impulsi non li vuole contare  forse forse sarebbe meglio usare un ingresso analogico e non digitale, anche se non capisco il ritardo che applica arduino all'ingresso digitale...
|
|
|
|
|
Logged
|
|
|
|
|
Deep south of Italy
Offline
Faraday Member
Karma: 6
Posts: 2954
The quieter you become, the more you can hear
|
 |
« Reply #24 on: June 21, 2010, 01:22:37 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #25 on: June 21, 2010, 01:31:13 pm » |
Già visti, c'è l'esempio dell'anti bounce (che non mi serve)  ora riguardo... ho trovato questo, sembra molto veloce, ma devo capire come funziona ;D local Pulses = {} -- This is a Table or an Array as you would also call it local InPin = digitalRead(5) -- This would be our Pin to read from local Frequency = 0 function Count(InPin) if(InPin == HIGH) then table.insert(Pulses, Frequency+1) end repeat end function Print(Pulses) print(#Pulses) end io.write(Print)
|
|
|
|
« Last Edit: June 21, 2010, 01:32:12 pm by Locke »
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #26 on: June 21, 2010, 01:35:10 pm » |
Ultima prova con questo http://www.arduino.cc/playground/Code/ButtonsPoi per oggi stendo un velo pietoso e ci ripenso domani  Grazie ancora a tutti.
|
|
|
|
|
Logged
|
|
|
|
|
Milano, Italy
Offline
Faraday Member
Karma: 10
Posts: 3080
Sideralis Arduino!
|
 |
« Reply #27 on: June 21, 2010, 04:49:44 pm » |
Scusate, non vorrei dire una scemenza, ma non potrebbe essere meglio un sensore di hall? http://en.wikipedia.org/wiki/Hall_effect_sensorNe ho un paio e non li ho mai usati, ma pensavo che sarebbero stati perfetti per questo scopo. Fede
|
|
|
|
|
Logged
|
|
|
|
|
Milano Italy
Offline
Jr. Member
Karma: 0
Posts: 61
Arduino <3
|
 |
« Reply #28 on: June 21, 2010, 06:11:16 pm » |
Credo sia la stessa cosa  Il reed è un contatto che commuta quando trova un campo magnetico...
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 160
Posts: 15643
+39 349 2158303
|
 |
« Reply #29 on: June 22, 2010, 02:13:23 am » |
ciao Locke
Sí il reed sono 2 lamerini magnetici che si attraggono e percui chiudono quando entrano in un campo magnetico opportunamente disposto (contatto NO). Con un secondo magnetino posto in modo opportuno si puó anche avere un contatto che si apre quando passa il magnete (contatto NC).
2 cose; non devi contare se l' ingresso é HIGH ma trovare il passaggio da LOW a HIGH. Memorizza lo sato del ingresso e confrontalo col nuovo stato if (in == HIGH && inold == LOW){ inold = in; contatore ++; dove "in" é lo stato attuale del entrata e "inold" quello vecchio. Questo ti fa trovare il cambio stato da LOW a HIGH.
Supposiamo che la ruota ha una circonferenza di quasi una metro (moto da strada) avendo un impulso a rotazione misuri 3,6 km/h, 7,2km/h, 10,8km/h 14,4km/h ecc
Vedi che la risoluzione misurando gli impulsi che ti arrivano in un secondo é molto grossolana. Per risolvere questo: piú impulsi per rotazione, tempo di misura piú lungo oppure misurare il tempo tra 2 impulsi. Per uno scooter, visto che ha le ruote piú pccole i valori sono piú vicini ma neanche in questo caso avrai una risoluzione sorprendente.
Ciao Uwe
|
|
|
|
« Last Edit: June 22, 2010, 02:14:07 am by uwefed »
|
Logged
|
|
|
|
|
|