• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Komunikacja USB, port szeregowy Arduino UNO
#1
Witajcie,
Mam problem który nie wiem jak ugryźć. Potrzebuję za pośrednictwem UNO spróbkować sygnał analogowy o częstotliwości ok 50Hz i wysłać dane do komputera, by odczytać to np w Matlabie, czy tam napisać program w Pythonie.
Widziałem w internecie różne projekty jak ludzi wykorzystywali arduino do prostego oscyloskopu, więc pomyślałem że Uno da radę.
Jednakże pomimo różnych supportów i API nie jestem w stanie przetworzyć sygnału oscylującego szybciej niż 5Hz. Co jest mega dziwne.
Po wielu bojach z kilkoma platformami wczoraj wpadłem na tzw. Kreślarkę w Arduino IDE. Tam odziwo okazało się że wszystko działa poprawnie, i mogę przetworzyć ładnego sinusa nawet o f=300Hz.
Czy macie może pomysł co może być nie tak, i czemu to tak nie chce działać?

Kod:
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
 // initialize the serial communication:
   sbi(ADCSRA,ADPS2) ;
   cbi(ADCSRA,ADPS1) ;
   cbi(ADCSRA,ADPS0) ;
 Serial.begin(250000);
}

void loop() {
 // send the value of analog input 0:
 Serial.println(analogRead(A0));
 // wait a bit for the analog-to-digital converter
 // to stabilize after the last reading:
 //delay(1);
}

Powyżej kod którego używam z "Kreślarką" przy najwyższej wydajności. Zmieniony prescaler, i max baudrate. Natomiast do Matlaba używam oficjalnego "support package for arduino".

Byłbym wdzięczny za jakiekolwiek wskazówki, ponieważ muszę to szybko ogarnąć :/
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości