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
    • Zawody/Konkursy/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 3 wyniki

  1. 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.
  2. 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:
  3. 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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.