10 لایک
-
شمارش با آردوینو
سلام دوستان
من میخوام که یک شمارش رو روی lcd نمایش بدم به صورتی که این ط.ری باشه که:
صدم ثانیه:ثانیه:دقیقه
من الان میتونم یک متن رو مثل helloروی lcd نمایش بدم
و میتونم یک تایمر با استفاده از کتابخونه های آردوینو درست کنم که میلی ثانیه بشمره
اما نمیتونم تایمر درست کنم که صدم ثانیه بشمره و روی lcd به صورت بالا نمایش بده
چند تا برنامه تایمر هم از سایت گرفت اما نمیفهمم چی میگه
لطفا کمکم کنید
ویرایش توسط ss13 : 05-10-2015 در ساعت 08:56 PM
-
سلام
چرا کسی جواب منو نمیده؟
-
unsigned long start, finished, elapsed;
void setup()
{
Serial.begin(9600);
pinMode(2, INPUT); // start button
pinMode(3, INPUT); // stop button
Serial.println("Press 1 for Start/reset, 2 for elapsed time");
}
void displayResult()
{
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
Serial.print("Raw elapsed time: ");
Serial.println(elapsed);
Serial.print("Elapsed time: ");
Serial.print(h,0);
Serial.print("h ");
Serial.print(m,0);
Serial.print("m ");
Serial.print(s,0);
Serial.print("s ");
Serial.print(ms,0);
Serial.println("ms");
Serial.println();
}
void loop()
{
if (digitalRead(2)==HIGH)
{
start=millis();
delay(200); // for debounce
Serial.println("Started...");
}
if (digitalRead(3)==HIGH)
{
finished=millis();
delay(200); // for debounce
displayResult();
}
}
فقط یکم تغییرات توش بده
arduino millis counter اینو اگه تو گوگل سرچ کنی چیزای دیگه ایی هم پیدا می کنی.
سوال داشتی در خدمتیم.....
ویرایش توسط solxsado : 05-13-2015 در ساعت 08:27 PM
-
سلام
خیلی ممنون به خاطر راهنمایی که انجا دادید
من کاملا برنامه شما رو متوجه شدم
اما چند تا سوال دارم:
یکی اینکه قبل از یک شدن پین شماره 2 و 3 این برنامه شروع به کار میکنه!
دومه اینکه مثلا من از یک صفحه serial monitor عکس گرفتم و نتیجه زی رو گرفتم که نمیدونم چرا!!!؟؟؟؟؟؟
Press 1 for Start/reset, 2 for elapsed time
Started...
Started...
Started...
Started...
Started...
Started...
Raw elapsed time: 200
Elapsed time: 0h 0m 2s 0ms
Started...
Raw elapsed time: 201
Elapsed time: 0h 0m 2s 1ms
Started...
Raw elapsed time: 200
Elapsed time: 0h 0m 2s 0ms
Started...
Raw elapsed time: 201
Elapsed time: 0h 0m 2s 1ms
Started...
Raw elapsed time: 201
Elapsed time: 0h 0m 2s 1ms
Started...
Raw elapsed time: 200
Elapsed time: 0h 0m 2s 0ms
سوم اینه من میخوا این برامه رو روی lcd پیاده کنم
برنامه زیر رو بهش اضافه کرم تا شاید جواب بده وی نمیدونم چرا جواب نمیده!
#include <SPI.h>
unsigned long start, finished, elapsed;
#include <LiquidCrystal.h>
LiquidCrystal lcd(10,9, 5, 4, 3, 2);
void setup()
{
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
Serial.begin(9600);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.println("hello");
lcd.setCursor(0,1);
lcd.print(s);
}
void loop()
{
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
if (digitalRead(13)==HIGH)
{
start=millis();
delay(200);
lcd.clear();
lcd.setCursor(0,0);
lcd.println("Started...");
}
if (digitalRead(14)==HIGH)
{
finished=millis();
lcd.println(s);
delay(200);
}
}
الان خط اول مینویسه start
اما در خط بعد عددی که مینویسه معلوم نیست که چیه
وقتی پایه 13 رو یک میکنم و بلافاصله 14 رو
یک بار مینویسه
47.00
یک بار مینویسه
19.00
با توجه به اینکه نوشتم ثانیه رو نشون بده معلوم نیست چی داره نشون میده
ممنون میشم اگه راهنماییم کنید
-
unsigned long start, finished, elapsed;
void setup(){
Serial.begin(9600);
}
void displayResult(){
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
Serial.print("Raw elapsed time: ");
Serial.println(elapsed);
Serial.print("Elapsed time: ");
Serial.print(h,0);
Serial.print("h ");
Serial.print(m,0);
Serial.print("m ");
Serial.print(s,0);
Serial.print("s ");
Serial.println("ms");
Serial.println();
}
void loop(){
finished=millis();
delay(10);
displayResult();
}
اینجا من ساده ترش کردم واست
-
سلام
مرسی
با این تعییرات الان برنامه به خوبی کار میکنه
unsigned long start, finished, elapsed;
#include <SPI.h>
int ledpin = 7;
int led = 13;
// LED connected to digital pin 13
#include <LiquidCrystal.h> //Load Liquid Crystal Library
LiquidCrystal LCD(10, 9, 5, 4, 3, 2);
void setup(){
pinMode(ledpin, INPUT);
// sets the digital pin as output
Serial.begin(9600);
LCD.clear();
LCD.begin(16,2); //Tell Arduino to start your 16 column 2 row LCD
LCD.setCursor(0,0); //Set LCD cursor to upper left corner, column 0, row 0
LCD.print("My Timer:"); //
}
void displayResult(){
int h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%100;
Serial.print("Raw elapsed time: ");
Serial.println(elapsed);
Serial.print("Elapsed time: ");
Serial.print(h,0);
Serial.print("h ");
Serial.print(m,0);
Serial.print("m ");
Serial.print(s,0);
Serial.print("s ");
Serial.print(s,0);
Serial.println("ms");
Serial.println();
}
void loop(){
aval:
if (digitalRead(ledpin)==HIGH)
{
int h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%100;
finished=millis();
delay(10);
displayResult();
LCD.setCursor(0,1);
LCD.print(h);
LCD.setCursor(4,1);
LCD.print(m);
LCD.setCursor(8,1);
LCD.print(s);
LCD.setCursor(12,1);
LCD.print(ms);
if(s==0)
{
LCD.setCursor(9,1);
LCD.print(" ");
}
if(m==0)
{
LCD.setCursor(5,1);
LCD.print(" ");
}
}
else if (digitalRead(ledpin)==LOW)
{
finished=millis();
delay(200); // for debounce
displayResult();
digitalWrite(led , HIGH);
goto aval;
}
}
البته الان هم من 2 تا مشکل دارم:
یکی اینکه من میخوام تا پایه 7 یک نشده زمان اندازه گیری نشه اما در این برنامه به محض اتصال برد به پاور زمان اندازه گیری میشه ووقتی پایه 7 به 5 ولت وصل میشه مثلا از زمان 18 ثانیه شروع به شمارش میکنه.
یکی دیگه اینکه در کمال تعجب باید بگم وقتی فقط در پایه 7 سیم قرار دارد و این سیم به جایی وصل نیست تایمر روی lcd زمان را نشان میدهد که ثانیه به جای یکی یکی دوتا دوتا افزایش می یابد
مثلا 39 ثانیه رو نشون میده بعد از 2 ثانیه 40 ثانیه رو نشون میده!!!!!!!!!!
ویرایش توسط ss13 : 05-15-2015 در ساعت 06:59 PM
-
پایه 7 رو باید poll down کنی یعنی با یه مقاومت 1 مگا اهمی به منفی وصل کنی
-
سلام
خیلی ممنون به خاطر راهنمایی هاتون
ی سوال دارم: چطور میشه این تایمر رو ریسیت کرد؟
من میخوام وقتی پایه 7 low شد سپس high شد تایمر شروع کنه از اول بشمره
چطور باید تایمر رو به این صورت فعال کنم؟
-
الو.........
دوستم کجایی؟
چطور میشه این تایمر رو ریست کرد؟
-
فکر نمی کنم ریست بشه
مگه میکرو رو ریست کنی
مجوز های ارسال و ویرایش
- شما نمیتوانید موضوع جدیدی ارسال کنید
- شما امکان ارسال پاسخ را ندارید
- شما نمیتوانید فایل پیوست کنید.
- شما نمیتوانید پست های خود را ویرایش کنید
-
مشاهده قوانین انجمن
SEO by vBSEO