Skocz do zawartości

D3binski

Użytkownicy
  • Zawartość

    17
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Osiągnięcia użytkownika D3binski

Starszy odkrywca

Starszy odkrywca (5/19)

  • Za 5 postów
  • To już rok!
  • Wschodząca gwiazda
  • Młodszy Juror

Odznaki

10

Reputacja

  1. Pomocy, wpisałem komendę sudo shutdown now na moim raspberry Pi 4 lecz pojawił się jedynie komunikat "Power down" i już nic więcej nie mogę wpisać, a kontrolki wciąż się świecą Update: wgrałem system drugi raz z nadzieją, że to pomoże, ale nic z tego, ten sam problem, a nie chcę uszkodzić rpi
  2. Cześć, zastanawiam się czy RPi będzie działało podłączone przez hdmi do laptopa. Czy jest to możliwe czy trzeba kombinować? Udałoby się cos zdziałać na laptopie czy byłoby więcej problemów niż nauki? Pozdrawiam :)
  3. Prosiłbym o poradę co dalej. Skończyłem pierwszy poziom elektroniki i oba poziomy arduino. Chciałbym spróbować z Raspberry, ale zastanawiam sie czy nie lepiej bedzie bardziej najpierw rozwinąć umiejętności związane z arduino lub elektronika bądź zacząć naukę lutowania? Byłbym wdzięczny za każda pomoc.
  4. #define kontaktron 4 #define pir 7 #define led_r 5 #define led_g 6 #define led_b 9 #define foto_rez A0 #define potencjometr A5 unsigned long aktualnyCzas = 0; //Zmiene pomocnicze do obslugiwania f. miilis() unsigned long zapamietanyCzas = 0; unsigned long timerLED = 10000; boolean czyCiemno = false; //zmienna infomujaca o oswietleniu boolean czyWlaczyc = false; //zmienna pomocnicza do f. wlacznik() boolean zapamietanyTryb = czyWlaczyc; int progJasnosci = 0; //zmienne do obslugiwania progu jasnosci int wartoscPotencjometru = 0; int jakJasno = 0; void setup() { Serial.begin(9600); pinMode(kontaktron, INPUT_PULLUP); //Ustawienie pinow pinMode(pir, INPUT); pinMode(led_r, OUTPUT); pinMode(led_g, OUTPUT); pinMode(led_b, OUTPUT); } void loop() { aktualnyCzas = millis(); //pobranie czasu ktory uplynal od wlaczenia plytki progJasnosci = analogRead(potencjometr); jakJasno = map(analogRead(foto_rez), 0, 1023, 200, 1100); if(jakJasno < progJasnosci){ //sprawdzenie poziomu jasnosci czyCiemno = true; //jesli ciemno, to zmien watosc zmiennej na pawde } else{ czyCiemno = false; //jesli jasno, zmien wartosc funkci na true czyWlaczyc = false; } if(czyCiemno){ //jesli jest ciemno if(digitalRead(kontaktron) == HIGH){ czyWlaczyc = false; } else if(digitalRead(pir) == HIGH){ //jesli wykryto takze ruch zapamietanyCzas = aktualnyCzas; //zapamietaj czas w ktorym ostatnio wykryles ruch czyWlaczyc = true; } } else{ czyWlaczyc = false; //jesli jest jasno to wylacz swiatlo } if(aktualnyCzas - zapamietanyCzas >= timerLED){ //jesli minie wyznaczony czas czyWlaczyc = false; //wylacz swiatlo } if(zapamietanyTryb == !czyWlaczyc){ //jesli zmieni sie tryb swiecenia zapamietanyTryb = czyWlaczyc; //zapamietaj aktualny tryb wlacznik(czyWlaczyc); //pzekaz aktualny tryb do f. wlacznik } } void wlacznik(boolean tryb){ //Funkcja obslugujaca wlaczanie/wylaczanie swiatla if(tryb){ digitalWrite(led_r, HIGH); digitalWrite(led_g, HIGH); digitalWrite(led_b, HIGH); } else{ digitalWrite(led_r, LOW); digitalWrite(led_g, LOW); digitalWrite(led_b, LOW); } } Program rozbudowany o fotorezystor i potencjometr to ustawienia maksymalnej wartości natężenia światła. Funkcja map do zneutralizowania problemu ze zbyt małą wartością napięcia na fotorezystorze przy zgaszonym świetle. Uwagi mile widziane, może uda się coś skrócić. @Treker, ogromne podziękowania i ukłony w Twoją stronę. Świetnie się bawiłem już od pierwszego poziomu kursu.
  5. Przyznaje się do błędu, dzis jeszcze raz przestudiowałem obraz z noty katalogowej dotyczący wyprowadzeń i doszedłem do wniosku, że określając wyprowadzenia trzymałem czujnik odwrotna stroną. Arduino przeżyło, kamień z serca 🙂 Puenta jest taka, że sprawdzając połączenia, nóżki trzeba trzymać skierowane do siebie, a nie na odwrót 🙂
  6. @Treker i to jeszcze jak :) dziękuje za rzetelne wytłumaczenie :)
  7. Pomocy, czujnik analogowy z przyzwyczajenia podłączyłem jak tranzystor używany w kursie i podłączyłem zasilanie. Po poprawieniu podłączeń czujnik zaczął się grzać, stwierdziłem, że się przepalił więc się z nim pożegnałem. Czujnik cyfrowy podłączyłem już dobrze, a mimo to pokazywał -127*C, a gdy go dotknąłem, to myślałem, że moje palce zamieniły się w pieczeń i ułyszałem syczenie (chyba czujnik, a nie płytka). Wolę zaczerpnąć opinii profesjonalisty przed kolejnym podłączeniem arudino, czy mogło dojść do uszkodzenia płytki, czy czujnik cyfowy był uszkodzony fabrycznie itd.
  8. Obawiam się, ze nie potrafię zrozumieć części z niebezpośrednim podłączeniem katody do masy „Przy włączeniu wszystkich segmentów cały wyświetlacz może pobrać "z katody" ponad 20 mA, więc nie powinniśmy podłączać jej bezpośrednio do Arduino!” Czy podłączenie masy przez tranzystor do Arduino zmienia cos poza możliwością sterowania? Nie jest to dalej połączenie bezpośrednie? Dlaczego w przykładzie z jednoczesnym wyświetlaniem tych samych znaków nie potrzebowaliśmy tranzystorów? Pozdrawiam :)
  9. /* Kurs Arduino II Forbot [5/10] Alarm złożony z czujnika ruchu (PIR), kontaktronu, sygnalizacji świetlnej, dżwiękowej i klawiatury */ // Adafruit NeoPixel - Version: Latest #include <Adafruit_NeoPixel.h> // Keypad - Version: Latest #include <Key.h> #include <Keypad.h> #define kontaktron 12 //czujnik magnetyczny #define buzzer A2 //sygnalizator dzwiekowy #define PIR A1 //czujnik ruchu const byte ROWS = 4; //deklaracja i przypisanie liczby rzedow const byte COLS = 4; //deklaracja i przypisanie liczby kolumn byte rowPins[ROWS] = {7, 6, 5, 4}; //deklaracja i przypisanie pinow rzedow i kolumn byte colPins[COLS] = {8, 9, 10, 11}; char keys[ROWS][COLS] = { //mapowanie klawiatury {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '7', 'C'}, {'*', '0', '#', 'D'} }; Keypad klawiatura = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //Inicjalizacja klawiatury Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800); //Konfiguracja linijki LED volatile int stanAlarmu = 1; int pinAlarmuPozycja = 1; char pinCyfra1 = '1'; // Ustawienie kodu char pinCyfra2 = '2'; char pinCyfra3 = '3'; char pinCyfra4 = '4'; int ileCzasuMinelo = 0; void setup() { pinMode(kontaktron, INPUT_PULLUP); pinMode(buzzer, OUTPUT); pinMode(PIR, INPUT); linijka.begin(); //Inicjalizacja linijki linijka.show(); } void loop() { char klawisz = 0; //zmienna przetrzymujaca znaki z klawiatury int i = 0; //zmienna pomocnicza do petli for switch (stanAlarmu){ //wykonaj akcje dla danego stanu alarmu case 1: //czuwanie linijka.setPixelColor(0, linijka.Color(0, 15, 0)); //dioda nr 1 swieci na zielono linijka.show(); klawisz = klawiatura.getKey(); if(klawisz == 'A'){ //Czy wlaczyc alarm for(i = 1; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 15)); linijka.show(); delay(680); } for(i = 1; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(15, 0, 0)); linijka.show(); delay(680); } pikpik(); //efekt dźwiękowy wylaczDiody(); stanAlarmu = 2; } break; case 2: //monitorowanie linijka.setPixelColor(7, linijka.Color(15, 0, 0)); //dioda nr 7 swieci na czerwono linijka.show(); delay(50); linijka.setPixelColor(7, linijka.Color(0, 0, 0)); //dioda nr 7 wylaczona linijka.show(); delay(50); if(digitalRead(PIR) == HIGH){ stanAlarmu = 4; //uruchom alarm pikpik(); //efekt dzwiekowy } else if(digitalRead(kontaktron) == HIGH){ ileCzasuMinelo = 0; //wyzeruj czas wpisywania pinu stanAlarmu = 3; //pozwol rozbroic } break; case 3: //rozbrajanie klawisz = klawiatura.getKey(); if (klawisz) { //Czy kolejna podana cyfra jest poprawna? if (pinAlarmuPozycja == 1 && klawisz == pinCyfra1) { //Jesli sprawdzamy 1 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 4300); //efekt dźwiękowy podczas wpisywania kodu delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 2 && klawisz == pinCyfra2) { //Jesli sprawdzamy 2 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 3500); delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 3 && klawisz == pinCyfra3) { //Jesli sprawdzamy 3 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 3500); delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 4 && klawisz == pinCyfra4) { //Jesli sprawdzamy 4 pozycje PINu stanAlarmu = 1; //Wszystkie 4 cyfry kodu sa poprawne tone(buzzer, 4300); delay(50); noTone(buzzer); } else { stanAlarmu = 4; //Blad w kodzie PIN - wlacz alarm pikpik(); } } delay(100); ileCzasuMinelo++; if(ileCzasuMinelo >= 50){ stanAlarmu = 4; pikpik(); } break; case 4: //alarm for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 255)); } linijka.show(); tone(buzzer, 4300); delay(50); for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(255, 0, 0)); } linijka.show(); tone(buzzer, 3500); delay(50); klawisz = klawiatura.getKey(); if(klawisz == 'D'){ for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 0)); } stanAlarmu = 1; noTone(buzzer); } break; } } void wylaczDiody(){ for(int i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 0)); //dioda nr i wylaczona } linijka.show(); } void pikpik(){ //funkcja dżwiękowa tone(buzzer, 4300); delay(100); noTone(buzzer); delay(50); tone(buzzer, 4300); delay(100); noTone(buzzer); delay(1000); } Dodane: *efekty dźwiękowe *pzycisk reset
  10. // Adafruit NeoPixel - Version: Latest #include <Adafruit_NeoPixel.h> Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800); //Konfiguracja linijki void setup() { linijka.begin(); //Inicjalizacja linijka.show(); } void loop() { int i = 0; for(i = 0; i < 4; i++){ if(i < 4){ linijka.setPixelColor(i, linijka.Color(255, 0, 0)); linijka.setPixelColor(7 - i, linijka.Color(0, 0, 255)); } linijka.show(); delay(100); linijka.clear(); } for(i = 2; i > 0; i--){ linijka.setPixelColor(i, linijka.Color(255, 0, 0)); linijka.setPixelColor(7 - i, linijka.Color(0, 0, 255)); linijka.show(); delay(100); linijka.clear(); } } W ramach ćwiczeń stworzyłem prymitywną symulacje odbicia doskonale sprężystego 🙂
  11. @Treker dobrze myślę, że za gate w omawianym tu tranzystorze mosfet jest odpowiedzialne skrajne wyprowadzenie zamiast środkowego tak jak w omawianym tranzystorze w kursie elektroniki? Jeśli tak, to czy da sie określić kiedy baza jest w konkretnym miejscu? Pozdrawiam :)
  12. Wielki powrót! /* https://forbot.pl/blog/kurs-arduino-wyswietlacz-tekstowy-lcd-id4263 Zadanie domowe 7.4 */ #include <LiquidCrystal.h> //Biblioteka obslugujaca wyswietlacz LCD #define przycisk 8 //Przypisanie wejscia 8 do przycisku LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Deklaracja obiektu lcd void setup(){ lcd.begin(16, 2); //Iformacja o ilosci znakow i wierszy lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Stoper Start:"); //Komenda wypisania lcd.setCursor(0, 1); lcd.print("Czas:"); pinMode(8, INPUT_PULLUP); //Ustawienie funkcji wejscia 8 na INPUT_PULLUP } double czas; //Deklaracja obiektu czas void loop(){ lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Stoper Start!"); //Komenda wypisania lcd.setCursor(0, 1); lcd.print("Czas: 0"); czas=0.0; //Przypisanie wartosci zmiennej czas while(digitalRead(przycisk)==HIGH){} //Dopoki przycisk nie zostanie nacisniety delay(150); //opznienie while(digitalRead(przycisk)==HIGH){ lcd.clear(); //wyczysc ekran lcd.setCursor(0, 0); lcd.print("Stoper stop!"); czas+=0.1; //Dodaj do zmiennej czas 0.1 lcd.setCursor(0,1); lcd.print("Czas: "); lcd.print(czas); delay(100); } while(digitalRead(przycisk)==LOW){} //Zatrzymaj sie dopoki przycisk bedzie wcisniety delay(100); lcd.clear(); //wyczysc ekran lcd.setCursor(0, 0); lcd.print("Twoj czas!"); lcd.setCursor(0, 1); lcd.print(czas); while(digitalRead(przycisk)==HIGH){} delay(200); }
  13. /* Kurs Arduino #3 Zadanie domowe 2.5 */ #define LedC 9 //LED czerwony #define LedZ 8 //Led żółty bool LedC_czyWlaczony=false; //Zmienna do sprawdzania stanu wyjścia LedC bool LedZ_czyWlaczony=false; //Zmienna do sprawdzania stanu wyjścia LedZ String LED; //Zmienna do zapisywania wyboru koloru LED void setup() { Serial.begin(9600); //Ustawienie transmisji pinMode(LedC,OUTPUT); //Konfiguracja LedC jako wyjście pinMode(LedZ,OUTPUT); //Konfiguracja LedZ jako wyjście digitalWrite(LedC,LOW); //LED czerwony wyłączony digitalWrite(LedZ,LOW); //LED zółty wyłączony Serial.println("Dostępne kolory LED: Zolty, Czerwony"); //Informacja o dostępnych kolorach } void loop() { if(Serial.available()>0){ //Sprawdzenie czy Arduino odebralo znaki LED=Serial.readStringUntil('\n'); //Przypisanie znaków do zmiennej LED if(LED=="Zolty"){ //Sprawdzenie czy wybrano kolor żółty if(LedZ_czyWlaczony==false){ //Sprawdzenie czy LED żółty jest wyłączony digitalWrite(LedZ,HIGH); //Włącz LED zielony LedZ_czyWlaczony=true; //Zmień wartość zmiennej na prawde (LED włączony) } else if(LedZ_czyWlaczony==true){ //Sprawdzenie czy LED żółty jest włączony digitalWrite(LedZ,LOW); //Wyłącz LED zielony LedZ_czyWlaczony=false; //Zmień wartość zmiennej na fałsz (LED wyłączony) } } else if(LED=="Czerwony"){ //Sprawdzenie czy wybrano kolor czerwony if(LedC_czyWlaczony==false){ //Sprawdzenie czy LED czerwony jest wyłączony digitalWrite(LedC,HIGH); //Włącz LED czerwony LedC_czyWlaczony=true; //Zmień wartość zmiennej na prawde (LED włączony) } else if(LedC_czyWlaczony==true){ //Sprawdzenie czy LED czerwony jest włączony digitalWrite(LedC,LOW); //Wyłącz LED czerwony LedC_czyWlaczony=false; //Zmień wartość zmiennej na fałsz (LED wyłączony) } } else{ //Jeżeli podano nieobsługiwany kolor Serial.println("\nWybrales nieobslugiwany kolor!"); //Informacja o błędzie Serial.println("Obslugiwane kolory: Zolty, Czerwony"); //Informacja o dostępnych kolorach } } }
×
×
  • 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.