 10   لایک
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