Skocz do zawartości

betepok

Użytkownicy
  • Zawartość

    36
  • 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 betepok

Wynalazca

Wynalazca (6/19)

  • Za 5 postów
  • Za 25 postów
  • To już rok!
  • To już 5 lat!
  • Młodszy Juror

Odznaki

0

Reputacja

  1. Witam Do raspberry pi podłączyłem dwa czujniki DS18B20 i BME280 Zainstalowałem serwer Apache Web Server. Chcę wyświetlić dane zbierane z czujników w czasie rzeczywistym. Do DS18B20 znalazłem przydatny kod w sieci. Rozwiązanie dla czujnika działa. Dane są wyświetlane na stronie www. <?php //File to read $file = '/sys/bus/w1/devices/28-01143f9e74aa/w1_slave'; //Read the file line by line $lines = file($file); //Get the temp from second line $temp = explode('=', $lines[1]); //Setup some nice formatting (i.e. 21,3) $temp = number_format($temp[1] / 1000, 1, ',', ''); //And echo that temp echo $temp . "°C Temperatura Gruntu"; ?> Czy spotkaliście się z rozwiązaniem dla czujnika BME280? Pozdrawiam
  2. betepok

    Czas Arduino start silnika

    Nic nie polepsza jest zbędny.
  3. betepok

    Czas Arduino start silnika

    Zadanie wykonane poniżej kod może się komuś przyda. Wystarczyło zmniejszyć czułość diody IR. Przy przesuwaniu kulek nie wyłapuje wiązki. Generalnie działa. W przyszłości dodam drugi silnik, zasobnik, czujnik na łuski. Może zaprojektuje jakąś prostą płytkę dla uporządkowania elementów w sterowniku. marek1707 dzięki za dobre słowo i wsparcie. Zasobnik do wydruku 3D Sam sterownik /* * - uruchaminie silnikow DC przy urzyciu 1xL298 dwukanalowy sterownik silnikow * - sterowanie predkosci silnikow 2x10kΩ * - czujnik podczerwieni IR * - przelacznik mikrostyk */ unsigned long aktualnyCzas = 0; unsigned long CzasStartuSilnika_A = 0; unsigned long CzasStartuSilnika_B = 0; int buttonPin2 = 3; //Wlacznik silnika B //Silnik A - podlaczenie do L298 int in1 = 4; int in2 = 5; int ConA = 6; int speed1; // czytaj z (A0) //Silnik B - podlaczenie do L298 int in3 = 7; int in4 = 8; int ConB = 9; int speed2; // czytaj z (A1) void setup() { //Wlacznik silnika A Serial.begin(9600); pinMode(12, INPUT);// Czujnik IR digitalWrite(12, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone) pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); //Wlacznik silnika B pinMode(buttonPin2, INPUT); //pracuje jako wejscie mikrostyk digitalWrite(buttonPin2, HIGH); //spoczynkowy stan wysoki (rezystory podciagajace wlaczone) pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); } //Silnik A - Kontrola obrotów i predkosci void TurnOnMotorA(){ //Wlaczenie silnika A digitalWrite(in1, LOW); //Zmiana kierunku - wstecz HIGH, LOW digitalWrite(in2, HIGH); speed1 = analogRead(A0); //Czytanie wartosci z A0 speed1 = speed1*0.2492668622; //Kalibracja potencjometru analogWrite(ConA,speed1); //Przeslanie wartosci do silnika } void TurnOffMotorA(){ //Wylaczenie silnika A digitalWrite(in1, LOW); //Zmiana kierunku - wstecz HIGH, LOW digitalWrite(in2, LOW); speed1 = analogRead(A0); speed1 = speed1*0.2492668622; analogWrite(ConA,speed1); } //Silnik B void TurnOnMotorB(){ //Wlaczenie silnika B digitalWrite(in3, LOW); digitalWrite(in4, HIGH); speed2 = analogRead(A1); speed2 = speed2*0.2492668622; analogWrite(ConB,speed2); } void TurnOffMotorB(){ //Wylaczenie silnika B digitalWrite(in3, LOW); digitalWrite(in4, LOW); speed2 = analogRead(A1); speed2 = speed2*0.2492668622; analogWrite(ConB,speed2); } void loop() { //Pobierz liczbe milisekund od startu aktualnyCzas = millis(); //Silnik A int detectIR = digitalRead(12); // Czytanie wartosci czujnika IR if(detectIR == HIGH && aktualnyCzas - CzasStartuSilnika_A >= 5000UL){ Serial.println("MOTOR STOP"); CzasStartuSilnika_A = aktualnyCzas; TurnOffMotorA(); } delay(100); if (detectIR == LOW && aktualnyCzas - CzasStartuSilnika_A >= 2000UL){ Serial.println("Motor START"); CzasStartuSilnika_A = aktualnyCzas; TurnOnMotorA(); } //Silnik B if(digitalRead(buttonPin2) == HIGH) { //Jezeli przycisk nie jest wcisniety TurnOnMotorB(); //Wlacz Motor B } else { TurnOffMotorB(); //Wylacz Motor B } }
  4. betepok

    Czas Arduino start silnika

    Próbujmy jeszcze raz. https://photos.app.goo.gl/D6AvMrhXorYu1ZrM6 https://photos.app.goo.gl/HRiERGmvHiqbSac26 int detect = digitalRead(12); // wykrywa stan HIGH/LOW if(detect == LOW && czasON - czasLOW >= 2000UL){ CzasStartuSilnika_A = aktualnyCzas; TurnOnMotorA(); } if (detect == HIGH && aktualnyCzas - CzasStartuSilnika_A >= 5000UL){ czasLOW = czasON; TurnOffMotorA(); } W czasie pracy podajnik zaczyna podawać kulki. Kiedy zatrzymam produkcję na 5 sekund podajnik kulek zatrzyma się. Jeśli produkcja trwa kulki są podawane cały czas. Myślę, że czujnik na chwilę przechodzi w stan ON następnie OFF i dolicza 5 sekund do zatrzymania. Moim celem jest wyeliminowanie chwilowego stanu ON/OFF kiedy kulki przesuwają się w rurce.
  5. betepok

    Czas Arduino start silnika

    Na pewno tak ma być? Po uaktywnieniu czujnika opóźnienie dwie sekundy przed uruchomieniem silnika? Co to daje? Tak ponieważ jeśli czujnik na chwilę zmieni stan leci z programem i dorzuca kulki. Dlatego pomyślałem o opóźnieniu 2 sekundy. [ Dodano: 13-07-2018, 17:02 ] JEŻELI krytyka jest konstruktywna czuje się w porządku 🙂 Z drugiej strony widzę chęć pomocy, szkoda odpuścić. 1)Start programu 2)Odczytanie stanu czujnika aktywny (1)/nieaktywny (0) a)Jeżeli czujnik aktywny (1) idź do pkt. 3 b)Jeżeli czujnik nieaktywny (0) idź do pkt. 1 3)Odmierzanie czasu 2 sekundy 4)Silnik START 5)Jeżeli czujnik nieaktywny (0) 6)Odmierzanie czasu 5 sekundy 7)Silnik STOP Idź do pkt.1
  6. betepok

    Czas Arduino start silnika

    1)Start programu 2)Odczytanie stanu czujnika aktywny/nieaktywny a)Czujnik aktywny idź do pkt. 3 b)Czujnik nieaktywny idź do pkt. 1 3)Odmierzanie czasu 2 sekundy 4)Silnik START 5)Rurka pełna - Czujnik nieaktywny 6)Odmierzanie czasu 5 sekundy 7)Silnik STOP Idź do pkt.1
  7. betepok

    Czas Arduino start silnika

    1)Start 2)Czujnik 0 idź do 4 3)Czujnik 1 idź do 9 4)Odmierzanie czasu 2 sekundy 5)Silnik START 6)Rurka pełna - Czujnik 1 7)Odmierzanie czasu 5 sekundy 8)Silnik STOP 9)Idź do 1
  8. betepok

    Czas Arduino start silnika

    Widzę to tak. 1) Włączam urządzenie 2)Odczytanie stanu czujnika. Stan czujnika widzi/nie widzi a)Jeśłi czujnik nie widzi kulek. Odmierza czas 2 sekundy, Silnik START (Silnik pracuje do czasu kiedy czujnik zobaczy kulki plus 5 sekund) b)Jełśi czujnik widzi kulki, Silnik STOP 3)Czujnik nie widzi kulek. Odmierza czas 2 sekundy, Silnik START 4)Czujnik widzi kulki. Odmierza czas 5 sekund, Silnik STOP 5)Czujnik nie widzi kulek. Odmierza czas 2 sekundy, Silnik START 6)Czujnik widzi kulki. Odmierza czas 5 sekund, Silnik STOP
  9. betepok

    Czas Arduino start silnika

    1 Włączam urządzenie 2 Czujnik nie widzi kulek 3 Silnik start 4 Silnik pracuje do czasu zakrycia czujnika plus 5 sekund 5 Silnik stop 6 Czujnik nie widzi kulek 7 Odlicza czas 2 sekundy 8 Jeżeli czujnik nie widzi kulek 9 Silnik start 10 Jeżeli czujunik widzi kulki 11 Silnik Stop
  10. betepok

    Czas Arduino start silnika

    Podajnik kulek Silnik obraca podajnikiem, który podaje kulki do rurki wyposażonej w czujnik IR. Kulki układają się jedna za drugą jeśli kulka przerwie wiązkę IR silnik po 5 sekundach zatrzymuje się. Pięć sekund jest ustawione celowo aby po uruchomieniu zawsze podał trochę więcej kulek. Dzięki temu silnik nie podaje co chwilę po jednej kulce. Problem występuje kiedy kulki się przesuwają w rurce. Przez chwilę wiązka IR zmienia stan na LOW silnik działa kolejne pięć sekund co wypełnia rurkę na kulki. Nie było by problemu gdyby zamiast kulek dać WAŁECZKI! 🙂
  11. Witam Staram się rozwiązać temat czasu, przerwania w wykonywaniu kodu. Program ma wykryć stan LOW i dopiero jeśli stan LOW utrzyma się np dwie sekundy wykonuje kod "START silnika" Jeśli w czasie dwóch sekund stan zmieni na HIGH nic się nie dziej. W tym momencie program startuje natychmiast i przy stanie HIGH zatrzymuje silnik po pięciu sekundach. jak ugryźć temat ruszania po określonym czasie? //Silnik A int detect = digitalRead(12); // wykrywa stan HIGH/LOW if(detect == LOW){ CzasStartuSilnika_A = aktualnyCzas; TurnOnMotorA(); //START silnika } //zatrzymanie po 5 sek. do wykrycia stanu HIGH if (detect == HIGH && aktualnyCzas - CzasStartuSilnika_A >= 5000UL){ TurnOffMotorA(); //STOP silnika }
  12. betepok

    Zakłócenia SCT013 - Arduino

    Tak Arduino Nano Tak 2x10k + 10uF Pomierzę wieczorem Dzieliłem wartość na 2. Wynik poniżej Na koniec wstawiłem "0" i zaczyna od 0.00 //Digital low pass filter extracts the 2.5 V or 1.65 V dc offset, // then subtract this - signal is now centered on 0 counts. offsetI = 0; filteredI = sampleI - offsetI; W sumie działa tak jak chciałem na razie nie rozumiem co dokładnie się stało 🙁
  13. betepok

    Zakłócenia SCT013 - Arduino

    Schemat i biblioteki wiozłem z LINK Próbowałem z "delay" efekt ten sam. Po restarcie bez wyłączenia zasilania również to samo. #include "EmonLib.h" // Include Emon Library EnergyMonitor emon1; // Create an instance Klema do wykrywania zamkniecia obwodu int ledPinRed = 8; //Dioda dniagnostyczna int V; //Napiecie void setup() { Serial.begin(9600); pinMode (ledPinRed, OUTPUT); emon1.current(2, 111.1); // Wykrywa zamkniecia obwodu Port Analogowy 2 kalibracja 111.1 delay(10000); //efekt z delay } void loop() { float Irms1 = emon1.calcIrms(1480); // Calculate Irms only Serial.print(Irms1*230.0); // Apparent power Serial.println(" "); V = Irms1*230; }
  14. Witam Poproszę o pomoc w temacie. Do portu analogowego (2) podłączyłem czujnik SCT013. Czujnik ma za zadanie sprawdzać napięcie i w razie wykrycia włączyć diodę plus w przyszłości wysłać SMS. Program w teorii działa lecz w czasie włączenia Arduino Nano na porcie A2 pojawiają się śmieci które zakłócają pracę programu. Czy jest sposób na zignorowanie fałszywych sygnałów? Program zapala diodę i wysyła SMS mimo braku napięcia wykrytego przez czujnik SCT013. W załączniku zachowanie programu po włączeniu #include <SoftwareSerial.h> SoftwareSerial mySerial(9, 10); // Port TX, RX Do komunikacji z modułem SMS #include "EmonLib.h" // Include Emon Library EnergyMonitor emon1; // Create an instance Klema do wykrywania zamkniecia obwodu int ledPinRed = 8; //Dioda dniagnostyczna int a=0; // zmienna "a" zlicza wystąpienia zamkniętego obwodu jesli =1 wyslij SMS int V; //Napiecie void setup() { mySerial.begin(9600); Serial.begin(9600); pinMode (ledPinRed, OUTPUT); emon1.current(2, 111.1); // Wykrywa zamkniecia obwodu Port Analogowy 2 kalibracja 111.1 delay(500); } void loop() { float Irms1 = emon1.calcIrms(1480); // Calculate Irms only Serial.print(Irms1*230.0); // Apparent power Serial.println(" "); V = Irms1*230; if (V >= 150 && a == 0){ digitalWrite(ledPinRed, HIGH); Serial.print("SMS - OBWOD ZAMKNIETY!"); Serial.println("Sending Text...OBWOD ZAMKNIETY!"); mySerial.print("AT+CMGF=1\r"); // Set the shield to SMS mode delay(100); mySerial.print("AT+CMGS=\"+48XXXXXXXXXXX\"\r"); delay(200); mySerial.print("OBWOD ZAMKNIETY!"); mySerial.print(V); mySerial.print(" napiecie"); mySerial.print("\r"); //the content of the message delay(500); mySerial.print((char)26);//the ASCII code of the ctrl+z is 26 (required according to the datasheet) delay(100); mySerial.println(); Serial.println("Text Sent."); delay(500); mySerial.println("ATD++48XXXXXXXX;");//dial the number, must include country code delay(100); mySerial.println(); a++; } else digitalWrite(ledPinRed, LOW); Serial.print("A "); Serial.println(a); }
  15. W jaki sposób uruchomic silnik?🙁 Już kiedyć to uruchomiłem chciałem powrócic do tematu tym razem z WiFi testrob@robo-desktop:~/robocik01$ python example00.py 0 4000 File "example00.py", line 11 pwm.setPWM(2, 0, speed) ^ IndentationError: expected an indented block Czegoś brakuje testrob@robo-desktop:~/robocik01$ python example00.py 1000 0 Traceback (most recent call last): File "example00.py", line 3, in pwm = PWM(0x60) File "/home/testrob/robocik01/Adafruit_PWM_Servo_Driver.py", line 57, in __init__ self.i2c = get_i2c_device(address, i2c, i2c_bus) File "/home/testrob/robocik01/Adafruit_PWM_Servo_Driver.py", line 19, in get_i2c_device import Adafruit_GPIO.I2C as I2C ImportError: No module named Adafruit_GPIO.I2C Adafruit_GPIO.I2C - skąd moge pobrać?
×
×
  • 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.