Ten kod umieszczony w osobnym skrypcie dziala bez problemow bowiem jest umieszczony w sekcji loop(). Po przeniesieniu do switch/case jest problem ze potrzebny jest przyciskOK aby przyjac znak i przetworzyc.
Kod dzialajacy w osobnym skrypcie wyglada nastepujaco:
W tej postaci kazde przekazanie nowej czestotliwosci za posrednictwem monitora portu szeregowego uruchamia nowa przekazana czestotliwosc.
Umieszczenie programu w czesci switch/case cos blokuje przetwarzanie. Aha W kodzie sa kontrolne komendy wyswietlania w oknie monitora portu szeregowego.
Kod dzialajacy w osobnym skrypcie wyglada nastepujaco:
Kod:
#include <LiquidCrystal.h>
#include <DDS.h>
unsigned long freq=(0);
#define TEXT_LEN 12
char odczytfreq[TEXT_LEN+1] = "";
char Str[12];
String odczyt;
// Instantiate the DDS...
DDS dds(5, 4, 3, 2);
//Instatiate LCD
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.print("Waiting ?");
Serial.begin(19200); //Uruchomienie komunikacji
while (!Serial) {
;
// wait for serial port to connect. Needed for native USB
}
}
void loop()
{
if(Serial.available() > 0) { //Czy Arduino odebrano dane
//Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej
odczyt = Serial.readStringUntil("\n");
// Serial.println(odczyt);
odczyt.toCharArray(odczytfreq, 12);
// Serial.println(odczytfreq);
freq=atol(odczytfreq);
Serial.println(freq);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Frequency: ");
lcd.setCursor(0, 1);
lcd.print(freq);
lcd.print(" Hz");
dds.init();
dds.setFrequency(freq);
}
}
W tej postaci kazde przekazanie nowej czestotliwosci za posrednictwem monitora portu szeregowego uruchamia nowa przekazana czestotliwosc.
Umieszczenie programu w czesci switch/case cos blokuje przetwarzanie. Aha W kodzie sa kontrolne komendy wyswietlania w oknie monitora portu szeregowego.
Poczatki zawsze sa trudne :-)
Arduino Mega256, Nano, Pro Mini.
Arduino Mega256, Nano, Pro Mini.