Skocz do zawartości

VVasyl

Użytkownicy
  • Zawartość

    20
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Wszystko napisane przez VVasyl

  1. Udało mi się znaleźć odpowiedź. https://www.arduino.cc/en/reference/ethernet Temat do zamknięcia.
  2. Mam układ podpięty pod Arduino (ethernet shield, wyświetlacz, dwa termometry), do którego postanowiłem dodać czujnik ruchu, który ma zapalać podświetlenie wyświetlacza. W tym celu wpiąłem odpowiednio czujnik, i napisałem prosty program do testu: #define podswietlenie 9 #define ruch 11 void setup() { pinMode (ruch, INPUT); pinMode (podswietlenie, OUTPUT); } void loop() { digitalWrite(podswietlenie, digitalRead(ruch)); } Program działa w porządku. Postanowiłem go dodać do mojego programu głównego i tu się zaczyna mój problem. Po włączeniu wyświetlacz świeci się cały czas. Co do tej pory
  3. Będzie możliwość zakupu samych płytek? W pomarańczowej ramce na początku artykułu powinno być miedzi, a nie miedzy
  4. Włączyłem program ponownie i działa tak jak można było się tego spodziewać. Nie mam pojęcia, dlaczego wczoraj mimo stałej użytej jako ziarno dostawałem przy każdym włączeniu programu inne wyniki. Bardzo fajny artykuł, udało mi się w końcu przez niego przebrnąć (trzecie podejście!). Fajnie jak w tekście pojawiają się linki (np. do Wikipedii) rozszerzające zagadnienie.
  5. 10.1 Zmieniając randomSeed(analogRead(0)); na np. randomSeed(2); nie zaobserwowałem żadnej różnicy w działaniu programu. W przypadku, gdy ziarno było jakąś stałą liczbową nie udało mi się znaleźć, żadnego schematu generowania liczb losowych przy kolejnych próbach włączenia programu. 10.2 void setup() { Serial.begin(9600); pinMode(9, INPUT_PULLUP); randomSeed(analogRead(0)); } void loop() { while (digitalRead(9) == HIGH) { //Zatrzymujemy się w pustej pętli delay(100); //W pętli wprowadzamy małe opóźnienie, aby niwelować zakłócenia } Serial.println(random(1,7)); //
  6. Znając zakres, w którym będziemy dokonywać pomiarów możemy znacznie ograniczyć pojawanie się błędów na wykresie. Wystarczy, że zamiast błędnie zmierzonej wartości wyświetlimy poprzednią. #define trigPin 12 #define echoPin 11 int zmierzona=0; // zmierzona wartość int odl=0; // wyświetlana odlagłość void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście pinMode(echoPin, INPUT); //a echo, jako wejści pinMode(13, OUTPUT); } void loop() { delay(100); zmierzona = zmierzOdleglosc(); if (zmierzona < 200) // czy zmierzona wartość mieś
  7. Zmieniłem rezystory i efekt jest wyraźny (szeroka histereza). Już nie mam żadnych wątpliwości, dzięki za pomoc.
  8. Prąd jest jak już pisałem minimalny. Więc w jaki sposób wpływa on na napięcie różnicowe? Szczególnie, że zmierzone napięcie z opornikiem R6 i bez niego jest takie same.
  9. W takim razie można usuwać. Dlaczego? Wpinam woltomierz tak jak na poniższym rysunku i mierzę napięcie w dwóch skrajnych położeniach potencjometru, a następnie usuwam opornik R6 i powtarzam pomiar. Zgodnie z tym co zostało napisane na końcu artykułu zmierzone napięcie powinno być odpowiednio wyższe i niższe w czasie pierwszego pomiaru w porównaniu z pomiarem bez opornika R6 a są dokładnie takie same.
  10. Program mierzy odległość i wyświetla ją na LCD w cm oraz przedstawia formie graficznej. Przy pomiarze poniżej 5 cm włącza się buzzer. Co muszę wpisać w miejsce "*" by zamiast gwiazdek na ekranie pojawiały się prostokąty? #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza #define trigPin 12 #define echoPin 11 void setup() { pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście pinMode(echoPin, INPUT); //a echo, jako wejście pinMode(13, OUTPUT); lcd.begin(16, 2); //Deklaracja typu
  11. Zadanie 8.3 #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza String odebraneDane = ""; //Pusty ciąg odebranych danych void setup() { Serial.begin(9600); lcd.begin(16, 2); //Deklaracja typu } void loop() { if(Serial.available() > 0) { //Czy Arduino odebrano dane odebraneDane = Serial.readStringUntil('\n'); //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane int ilosc = odebraneDane.toInt(); lcd.clear(); if (ilosc > 16) {
  12. 3 bardzo krótkie mignięcia następnie jedno ok. sekundowe i program jest wgrany.
  13. Zadanie 8.4 zrobione dla dwóch "silników" wraz ze zmianą kierunku "obrotu". void setup() { pinMode(6, OUTPUT); // sterowanie predkoscia silnika 1 digitalWrite(6, HIGH); pinMode(5, OUTPUT); digitalWrite(5, HIGH); // sterowanie predkoscia silnika 2 pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo digitalWrite(8, HIGH); digitalWrite(12, LOW); //Silnik nr 2 - obroty w lewo digitalWrite(13, HIGH); for (int i = 0; i <= 255; i++) //rozpedzanie { analogWrite (6,i); analogWrite (
  14. Tak, problemy wynikały właśnie z użycia tylko jednego przycisku (program uruchamiał się i o razu zatrzymywał). Jednak wystarczyło dodać kilka opóźnień i uwzględnić to przy mierzeniu czasu (stoper nie mierzy od 0 tylko od 0,2!).
  15. 7.4 źle przeczytałem polecenie i mój stoper ma tylko jeden przycisk #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza float czas =0; int stan =0; void setup() { lcd.begin(16, 2); //Deklaracja typu pinMode(10, INPUT_PULLUP); //Przycisk } void loop() { if (digitalRead(10) == LOW) // przycisniecie { lcd.clear(); delay(200); stan = 1; czas = 0.2; // uwzglednienie poprzedniego delay while (stan == 1) { lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("Pomiar czasu"
×
×
  • 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.