Analog Devices ADL6010 czyli detector do 44 GHz ADL6010 |
W ramach zabawy w nauke Arduino/STM32 moge pomoc Posiedzialem chwile po poludniu i jak narazie wydlubalem sobie przetwornik analogowo - cyfrowy wbudowany w Ardka, docelowo pewnie powinien byc osobny jak najblizej glowicy. Szybkosc rozwoju softu w jezyku wysokiego poziomu jest nieporownywalna. Wiekszosc czasu przypominalem sobie po prostu C i popelnialem glupie bledy przypominajac sobie czego nie wolno robic Testowy uklad wyglada nastepujaco W najblizszym czasie pewnie polutuje jakis AD8307 na szybko na pajaku i porownam zachowanie z "normlanym" miernikiem. Aha, no i oczywiscie zapomnialem - kod programu zeby pokazac jak wielkie ulatwienie mamy teraz dostepne: [quote="code"] /* * Testowy program do wyswietlacza i innych zabawek * */ // Dolaczane naglowki #include <Adafruit_GFX.h> #include <IIC_without_ACK.h> #include "oledfont.c" // Definicja pinow I/O do komunikacji // Arduino Mega ma domyslnie dla I2C: SDA = 20, SCL = 21 #define OLED_SDA 20 #define OLED_SCL 21 // Okreslenie wejscia ADC #define ADC0 0 String ADC0value="", ADC0valueDB=""; float ADC0valueFloat=0, ADC0valueDBFloat=0; // Inicjalizacja obiektu IIC_without_ACK wyswietlacz(OLED_SDA, OLED_SCL); void setup() { // Inicjalizacja wyswietlacza wyswietlacz.Initial(); // Wyczyszczenie wyswietlacza wyswietlacz.Fill_Screen(0x00); // Serial.begin(9600); delay(10); } void loop() { // Odczytanie wejscia przetwornika ADC, zapisanie do stringa oraz tablicy char ADC0valueFloat = analogRead(ADC0)*5.0/1023; ADC0valueDBFloat = 20 * log10(ADC0valueFloat/0.001); ADC0value=String(ADC0valueFloat)+" V"; ADC0valueDB=String(ADC0valueDBFloat)+" dBmV"; char ADC0valueChar[ADC0value.length()+1]; ADC0value.toCharArray(ADC0valueChar, ADC0value.length()+1); char ADC0valueDBChar[ADC0valueDB.length()+1]; ADC0valueDB.toCharArray(ADC0valueDBChar, ADC0valueDB.length()+1); // Tutaj juz normalnie piszemy - dla 8x16 max dlugosc linii to 16 znakow wyswietlacz.Char_F8x16(0, 0, "Wartosc napiecia"); wyswietlacz.Char_F8x16( ( (16-ADC0value.length())*8/2 ), 4, ADC0valueChar); wyswietlacz.Char_F8x16( ( (16-ADC0valueDB.length())*8/2), 6, ADC0valueDBChar); delay(500); } [/quote] pz |