Ini adalah posting lanjutan dari Signal Signal Generator DDS A9850 dan Frekuensi Meter . Dengan Saya tambahkan bagian untuk dapat merubah frekuensi secara serial melalui serial monitor pada Arduino sehingga frekuensi dapat diatur lebih fleksibel tanpa bolak balik upload program.
Berikut definisi variable yang perlu ditambahkan pada source code sebelumnya:
float buff_data;
String buff_string = "";
char buff_char;
Berikut modifikasi souce code (pengganti) yang berada pada bagian void loop(). Sedangkan yang lain masih tetap sama dengan source code sebelumnya.
void loop()
{
//lcd.clear();
//cek perintah serial
while(Serial.available()) {
buff_char = Serial.read();
buff_string.concat(buff_char); //menggabungkan variabel buff_char ke variable buff_string
}
//merubah tipe data string ke float (tipe data float = double)
char buf[buff_string.length()];
buff_string.toCharArray(buf,buff_string.length()+1);
float buff_data=atof(buf); //buff_data akan nol pada loop berikutnya jika tidak ada perintah
//(karena buff_string dikosongkan "" diakhir loop)
//cek jika ada permintaan perubahan frekuensi
if (buff_data>0) sendFrequency(buff_data);
Serial.print(freq_cek);
Serial.print(" ");
Serial.println(freq_satuan);
lcd.setCursor(0,0);
lcd.print("Freq DDS AD9850");
lcd.setCursor(0,1);
lcd.print("Freq= ");
lcd.print(freq_cek);
lcd.print(" ");
lcd.print(freq_satuan);
//delay(500);
buff_string="";
}
Berikut adalah screenshot hasil modifikasi dengan source code di atas:
![]() |
Contoh Hasil pada Serial Monitor |
Beberapa referensi utama:
http://www.instructables.com/id/Arduino-Timer-Interrupts/?ALLSTEPS
http://www.ad7c.com/projects/ad9850-dds-vfo/
http://letsmakerobots.com/content/how-convert-strings-double
http://stackoverflow.com/questions/5697047/convert-serial-read-into-a-useable-string-using-arduino