کد:
#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);
}
من توی این پروژه از سخت افزار خواصی استفاده نکردم ولی برای حرفه ای تر شدنش میشه یه آی سی 8704(مقسم فرکانس) به مدار اضافه کرد و تا فرکانس 950 مگاهرتز رو اندازه گیری کرد.
در ضمن با استفاده از همین کد تونستم دو تا فرکانس مختلف رو همزمان اندازه گیری کنم بدون اینکه توی کار کوچک ترین تداخلی ایجاد بشه.