Skocz do zawartości

Chester11-86

Użytkownicy
  • Zawartość

    90
  • Rejestracja

  • Ostatnio

Reputacja

3 Neutralna

O Chester11-86

  • Ranga
    4/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Dąbrowa Górnicza

Ostatnio na profilu byli

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

  1. Siedzę i siedzę i nic mi nie wychodzi, podsunie ktoś jakąś podpowiedź?
  2. Proszę bardzo w taki sposób uzupełniłem kod: #include <SoftwareSerial.h> SoftwareSerial telefon(2, 3); //piny do których podłączamy telefon char*numery[2]={"509168576","694377440"}; int i=0; void setup() { pinMode(7, INPUT_PULLUP); //pin diody wbudowanej w arduino telefon.begin(9600); } void loop(){ if (digitalRead(7) == LOW){ //jeżeli wciśnięto przycisk for(i=0;i<2;i++) { telefon.write("AT+CMGF=1\r\n"); //przejście w tryb SMS delay(150); telefon.write("AT+CMGS=\""); //nr odbiorcy delay(150); telefon.write(numery[i]); telefon.write("\"\r\n"); delay(150); telefon.write("ALARM ALARM ALARM\r\n");//treść sms'a delay(150); telefon.write((char)26); //koniec wiadomości delay(150); } } }
  3. Dodałem nawiasy i niestety dostaję smsa tylko na pierwszy numer telefonu, na drugi nic nie dochodzi.
  4. Witam Wszystkich, Bardzo zainteresował mnie artykuł na forum na temat alarmu przy użyciu Arduino UNO. Rozbudowałem go sobie o swoje czujniki, oraz chciałem dodać wysyłanie SMS. Tutaj wszystko działa bardzo dobrze, według założeń ale... zapragnąłem wysyłać smsy do kilku odbiorców i tutaj zaczynają się schody. Przeszukując internet napotkałem na informację aby użyć tablicy, w której będą zapisane numery telefonów. Niestety nie mogę zrozumieć troszkę działania takiego programu i może dlatego raz to działa, natomiast innym razem nie. Napisałem prosty program do wysyłania smsów, proszę o pomoc i podpowiedź gdzie popełniłem błąd, lub co źle interpretuje. Problem polega, że po uruchomieniu programu dostaje smsy na dwa numery telefonu a innym razem tylko na pierwszy wpisany numer telefonu. #include <SoftwareSerial.h> SoftwareSerial telefon(2, 3); //piny do których podłączamy moduł telefonu TX/RX char*numery[2]={"123456789","987654321"}; int i=0; void setup() { pinMode(7, INPUT_PULLUP); //przycisk telefon.begin(9600); } void loop(){ if (digitalRead(7) == LOW){ //jeżeli wciśnięto przycisk for(i=0;i<2;i++) telefon.write("AT+CMGF=1\r\n"); //przejście w tryb SMS delay(150); telefon.write("AT+CMGS=\""); //nr odbiorcy delay(150); telefon.write(numery[i]); telefon.write("\"\r\n"); delay(150); telefon.write("ALARM ALARM ALARM\r\n");//treść sms'a delay(150); telefon.write((char)26); //koniec wiadomości delay(150); } }
  5. Racja, nie wiem co mnie zamroczyło, dziękuję za rzetelne wyjaśnienie
  6. Witam Wszystkich, Napisałem taki prosty program na Arduino Uno i nie mogę go skompilować tego "if'a" w tym miejscu: case 0x343442BD: if (digitalRead(A2) = LOW) { digitalWrite(5, LOW); digitalWrite(6, LOW); Wyskakuje błąd: lvalue required as left operand of assignment Cały kod: #include <IRremote.h> IRrecv irrecv(2); decode_results results; void setup() { pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(A5, INPUT_PULLUP); pinMode(A4, INPUT_PULLUP); pinMode(A3, INPUT_PULLUP); pinMode(A2, INPUT_PULLUP); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { switch (results.value) { case 0x34347887: if (digitalRead(A5) = LOW) { digitalWrite(3, LOW); digitalWrite(4, LOW); delay (25); }else{ digitalWrite(3, LOW); digitalWrite(4, HIGH); delay (25); } break; case 0x3434827D: if (digitalRead(A4) = LOW) { digitalWrite(3, LOW); digitalWrite(4, LOW); delay (25); }else{ digitalWrite(3, HIGH); digitalWrite(4, LOW); delay (25); } break; case 0x343433CC: digitalWrite(3, LOW); digitalWrite(4, LOW); break; case 0x343455AA: if (digitalRead(A3) = LOW) { digitalWrite(5, LOW); digitalWrite(6, LOW); delay (25); }else{ digitalWrite(5, LOW); digitalWrite(6, HIGH); delay (25); } break; case 0x343442BD: if (digitalRead(A2) = LOW) { digitalWrite(5, LOW); digitalWrite(6, LOW); }else{ digitalWrite(5, HIGH); digitalWrite(6, LOW); delay(25); } break; case 0x3434748B: digitalWrite(5, LOW); digitalWrite(6, LOW); break; } irrecv.resume(); } } Dziękuję za pomoc i za wyjaśnienie problemu
  7. grg0 masz rację trzeba się trzymać tabelki ELECTRICAL CHARACTERISTICS Znalazłem gdzieś w szafie układ L298N, podłączyłem wszystko na 5V i działa, o dziwo silnik się zatrzymuję po przekroczeniu odpowiedniej wartości jaką sobie zadam. Rezystor jaki miałem pod ręką to 0,56Om ale bardzo się cieszę ponieważ poznałem sens działania układu oraz sposobu pomiaru ADC. Teraz tylko pozostało czekać na silniki, obliczyć dokładnie wszystkie wartości, dobrać odpowiednie rezystory i sprawdzić jak zachowuje się gotowy układ. Niestety wystąpił inny problem zauważyłem, że zawiesza się program i czasem trzeba kilkakrotnie naciskać przycisk na pilocie aby aktywowała się odpowiednia komenda. Postaram się opisać to w innym wątku aby nie zaśmiecać tego tematu, natomiast jeżeli zakończę pracę obiecuję wrzucić tutaj ostateczny kod programu dla potomnych Pozdrawiam serdecznie!
  8. No i znowu masz rację, logikę trzeba zasilić 7V: A silniki będą 6V Myślałem aby kupić gotowy układ: ale niestety nie posiada wyjść do kontroli prądu. Zastanawiam się nad zakupem shieldu i będzie po problemie
  9. Przyznaję rację, przeczytałem datasheet'y obu układów i układ L293 porażka, natomiast L298 posiada dwa wyprowadzenia do kontroli. Czy układ logiczny L298 mogę zasilić napięciem 9V?
  10. Przepraszam pomyliłem się z numerem chodziło mi o układ L293N, ale to chyba nie robi wielkiej różnicy? Ethanak, możesz się pochwalić swoim projektem ewentualnie schematem? Czekam właśnie na silniki, które chcę docelowo wykorzystać ale do tego czasu ćwiczyłbym sobie program na płytce
  11. Witam Wszystkich, Przeszukując stronę botland.com.pl pod względem nakładek na arduino uno do sterowania silników DC napotkałem na taki shield: https://botland.com.pl/pl/arduino-shield-kontrolery-silnikow-i-serw/1215-arduino-motor-shield-7630049200371.html Zaciekawiła mnie informacja dotycząca: "pomiaru natężenia prądu, jaki pobierają podłączone silniki". Czy na tej płytce jest jakiś układ, który umożliwia ten pomiar? Czy podobny układ mogę sam stworzyć mając tylko mostek L298N? Z góry dziękuję za odpowiedź!
  12. Jednak czeka mnie jeszcze więcej testów i nauki, na chwilę obecną dziękuję za uwagi, proszę o nie zamykanie tematu Pozdrawiam serdecznie!
  13. Hmmm, zadam takie dziwne pytania: 1. Czy jest możliwość w pętli setup zrobić przejście do jakiejś inne pętli niż loop? 2. Czy można w jednym programie używać biblioteki stepper.h oraz accelstepper.h? Z góry dzięki za odpowiedź!
  14. Szukałem, aby podlinkować stronę na której się wzorowałem, kojarze, że było coś z forum arduino. Tam wyjaśnione było jak używać accelstepper do silników unipolarnych oraz bipolarnych przy użyciu odpowiednich układów sterujących. Zauważ w moim kodzie na początku zdefiniowałem sobie STEP1 oraz STEP2. Przy takich silnikach jakie wykorzystuję wpisanie cyfry 4 oznacza pełne kroki ponieważ tak wynika z budowy samego silnika. Obliczając sobie z danych silnika żę do pełnego obrotu jest 32 kroki gdzie przekładnia jest 64 "krokowa" daje nam to na jeden pełny obrót wałem 2048 kroków. Niektórzy (może się spotkasz) wpisują na sztywno w taki sposób: AccelStepper stepper1(4, motorPin1, motorPin3, motorPin2, motorPin4); Jeżeli zamiast cyfry 4 wpiszesz cyfrę 8 czyli każdy step podzielisz na pół wyjdą Ci półkroki czyli wykonując obliczenia powyżej będziesz musiał na jeden pełny obrót zrobić 4096 kroków. Ja to zrozumiałem w ten sposób podpatrując forum arduino/forbot oraz starać się zrozumieć samą bibliotekę razem z przykładami umieszczonymi programie. Jeżeli coś namieszałem to proszę mnie poprawić aby nie szerzyć głupot a mój post skasować. Testowałem to kilkukrotnie i wszystko się sprawdzało dlatego taka moja odpowiedź Panowie, podpowiedzcie w którę stronę iść, chciałbym zrealizować program aby po włączeniu zasilania arduino wykonało pewne zadanie (tylko jednokrotnie) i dopiero przeszło do pętli loop(). Tyle już przeczytałem, że... proszę o malutką wskazówkę
  15. narbej wybaczam Ci wmaker dziękuję Ci za podpowiedzi, też czytałem tą bibliotekę ale ja to miałem rozwiązane w inny sposób i Twoje podpowiedzi są słuszne (moja opinia) ale nie rozwiązało to problemu Natomiast w kodzie pozbyłem się przedrostków "else" i wszystko działa jak to sobie wyobraziłem (trochę jeszcze pomodziłem): if (stepper1.currentPosition() == 4096 || stepper1.currentPosition() == 0) { digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW); } if (stepper2.currentPosition() == 4096 || stepper2.currentPosition() == 0) { digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(10, LOW); } Kod gotowy w 80% brakuję mi jeszcze jednej funkcji, po odcięciu zasilania ustawianie/zapamiętywanie pozycji silnika. Jak ktoś ma jakieś ciekawe podpowiedzi z chęcią wysłucham Pozdrawiam serdecznie!
×
×
  • Utwórz nowe...