Bojkas
Vytvořené odpovědi
-
AutorPříspěvky
-
BojkasÚčastník
Tak to dělá pořád to stejné, jen s tím, že mi nevím proč propisuje jen polovina displaye. Pokud to vrátím na ten původní kód, tak je to zase v pořádku.
BojkasÚčastníkPS: stačí, když ji deklaruji?
int rpm;
rpm = (rps*60);
lcd.clear();
lcd.print(„Vitr: „);
lcd.print(0.3142*rpm*0.06);
lcd.print(“ km/h“);BojkasÚčastníkAhoj,
ach tak, to mě nenapadlo.
Aleš: zdá se, že závorek je tam dost, vzorec jsem upravil, ale píše mi to, že „rmp“ není deklarované.
exit status 1
‚rpm‘ was not declared in this scope
http://fii.cz/zxfbym// Compute the RPM of a simple DC Motor using a photomicrosensor(PMS) #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define PMS_PIN A0 // Pin for signal from Photomicrosensor #define LED_PIN 13 //Using Arduino's Internal LED; just as an indicator boolean counted=false; int t1=0,t2=0; int hits=0; int rps=0; LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); void setup(){ pinMode(PMS_PIN, INPUT); pinMode(LED_PIN, OUTPUT); lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(16, 2); lcd.clear(); } void loop(){ t2 = millis(); if(t2 >= (t1 + 1000)){ rps = hits; hits = 0; t1=t2; } if(digitalRead(PMS_PIN) == HIGH){ if(!counted){ counted = true; hits++; } } else { counted = false; } digitalWrite(LED_PIN, digitalRead(PMS_PIN)); rpm = (rps*60); lcd.clear(); lcd.print("Vitr: "); lcd.print(0.3142*rpm*0.06); lcd.print(" km/h"); }
BojkasÚčastníkVečer zkusím, děkuji.
Každopádně bych rád znal důvod, abych zjistil, kde mohla být případně chyba?
BojkasÚčastníkZatím je to simulované na kolo o průměru 0,1m tzn obvod je 0,31m. zkoušel jsem to přerušovat papírem, zatím jsem na začátku.
BojkasÚčastníkAhoj,
tak jsem nakonec použil IR bránu, která měří otáčky.
Jaký vzorec použít na přepočet z otáček na km/h? Zkusil jsem do kódu zakomponovat „v = 2πr × RPM × (60/1000) km/hr“, nevím proč, ale měří to v násobcích 1,13. :-/
Celý kód:
// Compute the RPM of a simple DC Motor using a photomicrosensor(PMS) #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> #define PMS_PIN A0 // Pin for signal from Photomicrosensor #define LED_PIN 13 //Using Arduino's Internal LED; just as an indicator boolean counted=false; int t1=0,t2=0; int hits=0; int rps=0; LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); void setup(){ pinMode(PMS_PIN, INPUT); pinMode(LED_PIN, OUTPUT); lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(16, 2); lcd.clear(); } void loop(){ t2 = millis(); if(t2 >= (t1 + 1000)){ rps = hits; hits = 0; t1=t2; rpm = (rps*60); lcd.clear(); lcd.print("Vitr: "); lcd.print(0.3142*rpm*0.06); lcd.print(" km/h"); } if(digitalRead(PMS_PIN) == HIGH){ if(!counted){ counted = true; hits++; } } else { counted = false; } digitalWrite(LED_PIN, digitalRead(PMS_PIN)); }
BojkasÚčastníkNo spíše jsem myslel použít už existující řešení například v protokolu X-10.
-
AutorPříspěvky