Tampilkan postingan dengan label Serial. Tampilkan semua postingan
Tampilkan postingan dengan label Serial. Tampilkan semua postingan

Rabu, 17 September 2014

Signal Generator (DDS AD9850) dan Frekuensi Meter dan Kontrol Frekuensi dari Serial Monitor

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 

Merubah tipe data String ke Float (atau Double)

Berikut adalah source code untuk merubah tipe data String ke tipe data float (atau double). Ini sangat berguna saat komunikasi serial yang biasanya perintah dikirimkan melalui tipe data string

float buff_data;
String buff_string = "123.22";

//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);


double buff_data;
String buff_string = "123.22";

//merubah tipe data string ke float (tipe data float = double)
        char buf[buff_string.length()];
        buff_string.toCharArray(buf,buff_string.length()+1);
        double buff_data=atof(buf);


Referensi:
http://letsmakerobots.com/content/how-convert-strings-double

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....