Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'problem z kodem'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 4 wyniki

  1. Cześc chce stworzyć urządzenie które po wbiciu odpowiedniego numeru na klawiaturze zaczyna grać odpowiednią melodie zapisaną na karcie sd. Większość problemów udało mi sie rozwiązać, lecz na obecny nie jestem w stanie znaleźć rozwiązania. Mianowicie jak mam podłączoną klawiature, czytnik kart sd i głośnik któryś z komponentów nie działa (prawdo podobnie czytnik). Arduino zgodnie z programem sprawdza podłączenie wszystkich elementów jednakże nie odgrywa nagrania testowego. Klawiatura działa czytnik teoretycznie też, ale nie da się odtworzyć żadnego dźwięku. Jeśli ktoś jest w stanie mi pomóc to proszę o odpowiedź, poniżej zamieszczam konfiguracje urządzenia i kod. #include <Arduino.h> #include <Keypad.h> #include <SD.h> // need to include the SD library //#define SD_ChipSelectPin 53 //example uses hardware SS pin 53 on Mega2560 #define SD_ChipSelectPin 4 //using digital pin 4 on arduino nano 328, can use other pins #include <TMRpcm.h> // also need to include this library... #include <SPI.h> // C++ code //#define buzer A0; TMRpcm tmrpcm; unsigned long time = 0; const byte ROWS = 5; const byte COLS = 4; byte rowPins[ROWS] = {A5, A4, A3, A2, A1}; byte colPins[COLS] = {5, 3, 2, 0}; char keys[ROWS][COLS] ={ {'3','2','1'}, {'7','6','5'}, {'*','0','9'}, {'.','8',','}, {'e','w','4'} }; Keypad klawiatura = Keypad(makeKeymap(keys), rowPins,colPins,ROWS,COLS); String tekst; const String tel_book[2] = {"123","321"}; // tu wpisujemy numery pod którymi znajdują sie scieżki dźwiękowe char* track_list[2] = {"test.wav","cos2.wav"}; // tu wpisujemy nazwy ścieżek dźwiekowych int lokalizator; void setup() { tmrpcm.speakerPin = 10; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc //Complimentary Output or Dual Speakers: //pinMode(10,OUTPUT); Pin pairs: 9,10 Mega: 5-2,6-7,11-12,46-45 Serial.begin(9600); pinMode(13,OUTPUT); //LED Connected to analog pin 0 | w sumie to nie wiem ale bez tego nie działa if (!SD.begin(SD_ChipSelectPin)) { // sprawdza czy karta sd jest poprawnie zainstalowana na miejscu Serial.println("SD fail"); return; // jeśli nie to wyłącza program } else{ Serial.println("SD ok"); } tmrpcm.play("test.wav"); // odgrywa testowy dźwięk po włączeniu urządzenia tmrpcm.volume(4); } void loop() { char klawisz = klawiatura.getKey(); // pobiera dane z klawiatury i przypisuje do zmiennej if (klawisz) { tekst += klawisz; //wybieranie numeru Serial.println(tekst); if (tekst.length()==3) // gdy długość numeru jest odpowiednia zaczyna szukac go w książce telefonicznej { for (int i = 0; i < sizeof(tel_book); i++) { if (tel_book[i] == tekst) { lokalizator = i; // po znaleziemiu odpowiedniego numeru wybiera jego pozycje z listy tekst = ""; }else{ tmrpcm.play("9999.wav"); // odtworzenie informacji o błednie wybranym numerze } } } } // wcześniej odnaleziony numer inicjuje odtworzenie odpowiedniej ścieżki dźwiękowej tmrpcm.play(track_list[lokalizator]); // to powinno już działac ale jeszcze nie wiem czy tak jak chce }
  2. Witam, W trakcie robienia projektu (pojazd sterowany pilotem przez Bluetooth) napotkałem problem z nowo kupionym Arduino Nano Every (piny lutowałem sam). Chciałem, aby na pinach cyfrowych (podpiętych do przycisków) odczytywane było napięcie (HIGH lub LOW). Arduino z ustawionymi pinami na INPUT odczytuje stan wysoki - zawsze, choć powinien być stan niski. Wszystko działa dobrze po ustawieniu pinów na OUTPUT. Czy tak powinno być? Z tego co wiem to ustawienie na INPUT służy do odczytu, a odczyt z pinu ustawionego na OUTPUT powinien skończyć się błędem. Dla testu napisałem program: const int pinOut = 6; const int pinIn = 7; void setup() { Serial.begin(9600); pinMode(pinOut, OUTPUT); pinMode(pinIn, INPUT); } void loop() { //Odczyt z pinu 6 if(digitalRead(pinOut) == LOW) { Serial.println("Pin 6: LOW"); } //Odczyt z pinu 7 if(digitalRead(pinIn) == LOW) { Serial.println("Pin 7: LOW"); }else { Serial.println("Pin 7: HIGH"); } delay(1000); } Arduino jest podłączone tylko do komputera, żadne piny nie są połączone. A tutaj wynik: Pin 6: LOW Pin 7: HIGH Pin 6: LOW Pin 7: HIGH Pin 6: LOW Pin 7: HIGH Pin 6: LOW Pin 7: HIGH Pin 6: LOW Pin 7: HIGH Pin 6: LOW Pin 7: HIGH Czy to ja się mylę, czy np. płytka jest uszkodzona? Z góry dziękuję za pomoc.
  3. Witam, skończyłem podstawy elektroniki część pierwsza, teraz miałem zamiar nauczyć się podstaw Pythona i zacząć z kursem Raspberry Pi (dodam tylko, że wcześniej programowałem ok. 4 miesiące w C++ i skończyłem kursy pana Mirosława Zelenta) lecz natrafiłem na pewien problem, który ogranicza możliwość dalszego rozwijania się, problem ten związany jest z wybieraniem Interpretera mianowicie w momencie kiedy ręcznie dodaję interpreter wyskakuje mi błąd "Permission denied". Proszę o pomoc, ponieważ nie chciałbym, żeby jakieś środowisko pracy stanowiło dla mnie przeszkodę w rozwijaniu się. (Dodam również, że mam 16 lat i jestem bardzo zmobilizowany do nauki programowania). Z góry dziękuje za wszelką pomoc. Poniżej zamieszczam screeny:
  4. Cześć, od jakiegoś czasu pracuję nad projektem, który polega na zaprojektowaniu, zbudowaniu i zaprogramowaniu plotera do skanowania pola magnetycznego. Elektronika układu to Arduino Uno R3 oraz CNC Shield ze sterownikami A4988, czujnik to magnetometr GY-271. Problem polega na tym, że kod który napisałem dziś przestał działać a nie modyfikowałem go od ostatniego razu kiedy wszystko było w porządku, nie wiem gdzie może być błąd ale wydaje mi się, że w kodzie dotyczącym obsługi czujnika magnetycznego próbowałem go zmienić ale niestety bez powodzenia tak jakby kod utkną w pętli while. Kod do obsługi czujnika zapożyczyłem od Jastrzębskiego ze strony : http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-magnetometr-hmc5883l.html Całość kodu poniżej. #include <Wire.h> //biblioteka do komunikacji z czujnikiem przez I2C #include <HMC5883L.h> //biblioteka do obsługi czujnika #define dirPin_X 5 #define stepPin_X 2 #define dirPin_Y 6 #define stepPin_Y 3 #define enable 8 int kroki_X = 400; //kroki silnika osi X, 400 kroków = przesunięcie o 1mm int kroki_Y = 80; //kroki silnika ois Y, 80 kroków = przesuięcie o 1mm int rozmiar_X = 2; //liczba wykoania pętli for ruchu silnika osi X int rozmiar_Y = 20; //liczba wykoania pętli for ruchu silnika osi Y int predkosc_X = 2000; //szybkości z jaką będzie obracał się silnik osi X int predkosc_Y = 2000; //szybkości z jaką będzie obracał się silnik osi X int LiczbaProbek = 1; //liczba pomiarów do wykanania wzdłuż osi Y int koniec = 6; //warunek kończący pracę skanera int pozycja_x; //pusty zbiór do zapisu pozycji silnika osi X int pozycja_y; //pusty zbiór do zapisu pozycji silnika osi Y String odebraneDane = ""; // pusty ciąg odebranych danych HMC5883L czujnik; //zmienna globalna void setup() { Serial.begin(9600); //rozpoczęcie komunikacji // Inicjalizacja HMC5883L Serial.println("Initialize HMC5883L"); while (!czujnik.begin()) { Serial.println("Nie odnaleziono HMC5883L, sprawdz polaczenie!"); delay(500); } // Ustawienie zakresu pomiarowego // +/- 0.88 Ga: HMC5883L_RANGE_0_88GA // +/- 1.30 Ga: HMC5883L_RANGE_1_3GA (domyslny) // +/- 1.90 Ga: HMC5883L_RANGE_1_9GA // +/- 2.50 Ga: HMC5883L_RANGE_2_5GA // +/- 4.00 Ga: HMC5883L_RANGE_4GA // +/- 4.70 Ga: HMC5883L_RANGE_4_7GA // +/- 5.60 Ga: HMC5883L_RANGE_5_6GA // +/- 8.10 Ga: HMC5883L_RANGE_8_1GA czujnik.setRange(HMC5883L_RANGE_1_3GA); // Ustawienie trybu pracy // Uspienie: HMC5883L_IDLE // Pojedynczy pomiar: HMC5883L_SINGLE // Ciagly pomiar: HMC5883L_CONTINOUS (domyslny) czujnik.setMeasurementMode(HMC5883L_CONTINOUS); // Ustawienie czestotliwosci pomiarow // 0.75Hz: HMC5883L_DATARATE_0_75HZ // 1.50Hz: HMC5883L_DATARATE_1_5HZ // 3.00Hz: HMC5883L_DATARATE_3HZ // 7.50Hz: HMC5883L_DATARATE_7_50HZ // 15.00Hz: HMC5883L_DATARATE_15HZ (domyslny) // 30.00Hz: HMC5883L_DATARATE_30HZ // 75.00Hz: HMC5883L_DATARATE_75HZ czujnik.setDataRate(HMC5883L_DATARATE_15HZ); // Liczba usrednionych probek // 1 probka: HMC5883L_SAMPLES_1 (domyslny) // 2 probki: HMC5883L_SAMPLES_2 // 4 probki: HMC5883L_SAMPLES_4 // 8 probki: HMC5883L_SAMPLES_8 czujnik.setSamples(HMC5883L_SAMPLES_1); pinMode(stepPin_X, OUTPUT); //Ustawienie stepPin_X jako wyjście pinMode(dirPin_X, OUTPUT); //Ustawienie dirPin_X jako wyjście pinMode(stepPin_Y, OUTPUT); //Ustawienie stepPin_Y jako wyjście pinMode(dirPin_Y, OUTPUT); //Ustawienie dirPin_X jako wyjście pinMode(enable, HIGH); //Ustawienie stanu wyskoiego na enable } void loop(){ if(Serial.available() > 0) { //Czy arduino odebrało dane? //jeżeli tak to odczytaj je do znaku końca linii i zapisz w zmiennej odebrane dane odebraneDane = Serial.readStringUntil('\n'); for(int i = 0;odebraneDane == "start";i++){ //Jeżeli odebrane słowo to start rozpocznij program poniżej if (pozycja_x < koniec){ //Warunek zatrzymania programu for (int i = 0; i < rozmiar_Y; i++){ //Pętla odpowiedzialna za ruch silnika wzdłuż osi Y+ kroki_plus1mm_Y(); Vector norm = czujnik.readNormalize(); //pomiar pola magnetycznego wykonywany co 1mm pozycja_y = pozycja_y + LiczbaProbek; //Zapisywanie pozycji silnika osi Y Serial.print("x_"); //Wyświetlenie aktualnej pozycji osi X Serial.print(pozycja_x); Serial.print(" Y_"); //Wyświetlenie aktualnej pozycji osi Y Serial.print(pozycja_y); Serial.print(" pomiar = "); //Wyświetlenie wyniku pomiaru pola magnetycznego Serial.print(norm.ZAxis); Serial.println( ); } for (int i = 0; i < rozmiar_X; i++){ //Pętla odpowiedzialna za ruch silnika wzdłuż osi x+ kroki_plus1mm_X(); pozycja_x = pozycja_x + 1; //Zapisywanie pozycji silnika osi X } for (int i = 0; i < rozmiar_Y; i++){ //Pętla odpowiedzialna za ruch silnika wzdłuż osi Y- kroki_minus1mm_Y(); Vector norm = czujnik.readNormalize(); //pomiar pola magnetycznego wykonywany co 1mm pozycja_y = pozycja_y - LiczbaProbek; //Zapisywanie pozycji silnika osi Y Serial.print("x_"); //Wyświetlenie aktualnej pozycji osi X Serial.print(pozycja_x); Serial.print(" Y_"); //Wyświetlenie aktualnej pozycji osi Y Serial.print(pozycja_y); Serial.print(" pomiar = "); //Wyświetlenie wyniku pomiaru pola magnetycznego Serial.print(norm.ZAxis); Serial.println( ); } for (int i = 0; i < rozmiar_X; i++){ //Pętla odpowiedzialna za ruch silnika wzdłuż osi x+ kroki_plus1mm_X(); pozycja_x = pozycja_x + 1; //Zapisywanie pozycji silnika osi X } } else{ Serial.println("SKANOWANIE ZAKOŃCZONO"); delay(5000); } } } } void kroki_plus1mm_X(){ digitalWrite(dirPin_X, HIGH); //ustwaienie kierunku wirowania silnika x zgodnie ze wskazówkami zegara for (int i = 0; i <kroki_X; i++) { //400 kroków przesunięcie o +1mm digitalWrite(stepPin_X, HIGH); //jeden krok silnika delayMicroseconds(predkosc_X); digitalWrite(stepPin_X, LOW); delayMicroseconds(predkosc_X); } } void kroki_plus1mm_Y(){ digitalWrite(dirPin_Y, HIGH); //ustwaienie kierunku wirowania silnika Y zgodnie ze wskazówkami zegara for (int i = 0; i <kroki_Y; i++) { //5 kroków przesunięcie o +1mm digitalWrite(stepPin_Y, HIGH); //jeden krok silnika delayMicroseconds(predkosc_Y); digitalWrite(stepPin_Y, LOW); delayMicroseconds(predkosc_Y); } } void kroki_minus1mm_X(){ digitalWrite(dirPin_X, LOW); //ustwaienie kierunku wirowania silnika X przeciwnie do ruchu wskazówek zegara for (int i = 0; i <kroki_X; i++) { //400 kroków przesunięcie o -1mm digitalWrite(stepPin_X, HIGH); //jeden krok silnika delayMicroseconds(predkosc_X); digitalWrite(stepPin_X, LOW); delayMicroseconds(predkosc_X); } } void kroki_minus1mm_Y(){ digitalWrite(dirPin_Y, LOW); //ustwaienie kierunku wirowania silnika y przeciwnie do ruchu wskazówek zegara for (int i = 0; i <kroki_Y; i++) { //5 kroków przesunięcie o -1mm digitalWrite(stepPin_Y, HIGH); //jeden krok silnika delayMicroseconds(predkosc_Y); digitalWrite(stepPin_Y, LOW); delayMicroseconds(predkosc_Y); } }
×
×
  • Utwórz nowe...