اینم از کد های کامل شده و کاملا تست شده:
من توی این پروژه از سخت افزار خواصی استفاده نکردم ولی برای حرفه ای تر شدنش میشه یه آی سی 8704(مقسم فرکانس) به مدار اضافه کرد و تا فرکانس 950 مگاهرتز رو اندازه گیری کرد.کد:#define input 4 //#define in 8 #define F1 15 #define F2 16 #define F3 17 #define F4 13 float high_time; float h_time; float low_time; float l_time; float time_period; float t_period; float frequency; float frequenc; void setup() { pinMode(input,INPUT_PULLUP); //pinMode(in,INPUT_PULLUP); pinMode(F1,OUTPUT); pinMode(F2,OUTPUT); pinMode(F3,OUTPUT); pinMode(F4,OUTPUT); //Serial.begin(9600); } void loop() { high_time=pulseIn(input,HIGH); low_time=pulseIn(input,LOW); time_period=high_time+low_time; time_period=time_period/1000; if(time_period!=0){frequency=1000/time_period;} else {Serial.println("0 Frequency");frequency=0;} /* h_time=pulseIn(in,HIGH); l_time=pulseIn(in,LOW); t_period=h_time+l_time; t_period=t_period/1000; if(t_period!=0){frequenc=1000/t_period;} else {Serial.println("0 Frequenc");frequenc=0;} */ //Serial.println(frequenc); //Serial.println(frequency); //Serial.print(" Hz"); if (frequency >= 17){ digitalWrite (F1, HIGH); } else if (frequency <=16) { digitalWrite (F1, LOW); } if (frequency >= 25){ digitalWrite (F2, HIGH); } else if (frequency <= 24) { digitalWrite (F2, LOW); } if (frequency >= 38){ digitalWrite (F3, HIGH); } else if (frequency <= 37) { digitalWrite (F3, LOW); } if (frequency >= 49){ digitalWrite (F4, HIGH); } else if (frequency <=48){ digitalWrite (F4, LOW); } delay(100); }
در ضمن با استفاده از همین کد تونستم دو تا فرکانس مختلف رو همزمان اندازه گیری کنم بدون اینکه توی کار کوچک ترین تداخلی ایجاد بشه.


7 لایک
LinkBack URL
About LinkBacks



پاسخ با نقل قول