Przede wszystkim błąd jest tutaj: S1 Alias Porta.3 (O ile s1 to button)
Dać kondensatory do masy od mikros.... rezystory podciągające lub w programie dać coś takiego jak DEBOUNCE w BASCOM jeśli w nim piszesz.
Wszystko zależy jak rozwiązano w danym przypadku sposób liczenia interwałów taktowania zegara, ale typowo w elektronicznych układach odmierzających czas są montowane te typowe kwarce 32768 kHz w cylindrycznej oprawce. Owe kwarce znajdziesz w zegarkach czy to wskazówkowych kwarcowych z budzikiem czy też w płytach głównych PC :) Jeżeli przycisk masz na...
[syntax=vbnet] Zmienna = Ileśtam Gosub Sub_przycisku Do .. Debounce Przycisk, 0, Sub_przycisku, Sub Loop End Sub_przycisku: Select Case Zmienna Case Ileśtam : Zrób to End Select Return[/syntax]
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
Jak napisać menu (np. 4 poziomy x 4 funkcje) Np: możesz zrobić tak że 4x4 to jest 16 stanów (lub w zależności jak to prezentujesz więcej). Więc piszesz funkcje która jest wywoływana gdy wciśnie się to MENU, a w funkcji pętle gdzie masz 16 warunków oraz jedna zmienna która wskazuje który stan jest obsługiwany. Zamiast warunków można użyć switch ale...
Niestety, to nie pomogło, usunąłem wszystkie wait'y które tam były i dalej jest to samo. Może macie jakieś inne pomysły? Wszystkich nie usnąłeś - zostało 25ms z debounce. Poza tym konfiguracja przerwania jako Low level powoduje, że jest ono generowane raz za razem dopóki jest stan niski na pinie. Przerwanie nie zdąży się obsłużyć, bo debounce potrzebuje...
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Ten przykład działa, ale tylko dla jednego "przełącznika" ale gdy robie np dwa kolejne to już coś jest źle. Buduje urządzonko, które będzie załączać 3 przekaźniki: - 3 przyciski (portd.4, portd.5, portd.6) - 3 przekaźniki (portd.1, portd.2, portd.3) Jak to można zrobić w BASCOMie?? Kod dla w/w konfiguracji: Config Debounce = 30 Config Portd = Output...
rozwiazan tematu jest wiele ale bitwait czy debounce nie tutaj kooledzy Dim A As Bit A = P1.2 Do If P1.2 <> A Then If A = 1 Then P1.3 = 1 Waitms 10 P1.3 = 0 A = P1.2 Else P1.4 = 1 Waitms 10 P1.4 = 0 A = P1.2 End If End If Loop
Myślałem o czymś takim :) Dim Ax(7) As Byte , X As Byte , Pozycja As Byte Dim Suma As Long Config Debounce = 100 ' lub ... jak kto woli ;) Poz Alias P3.7 Zmien Alias P3.5 Star Alias P3.1 Pozycja = 1 Cls Do Locate 1 , 1 Lcd "wprowadz liczbe" ; Pozycja Locate 2 , 1 For X = 1 To 7 Lcd Ax(x); Next X Debounce Poz , 0 , Incrpozycja...
To się nie ma prawa skompilować. Goto skacze do x, którego nie ma. Poza tym jest jeszcze kilka kwiatków w tym programie. Domyślam się, że program ma zmieniać stan końcówki PD.1 w wyniku zwarcia końcówki PC.4 do masy. Zatem [syntax=basic4gl]DDRC.4 = 0: PORTC.4 = 1 DDRD.1 = 1 Do Debounce PINC.4, 0, x, Sub Loop End x: waitms 30 toggle portd.1 Return[/syntax]...
...Dałem polecenie debounce i powinno zwiększyć zmienną o 1 i poczekać do puszczenia przycisku, ale nawet szybkie naciśnięcie zwiększa zmienną o kilkadziesiąt jednostek. Może chodzi o przerwania? Może to być "sprawka" przerywań, proponuję na początek: [syntax=basic4gl]Klik: Disable interrupts Incr Bsend If Bsend = 100 Then Bsend = 0 Enable Interrupts...
...I dalej mam takie pytanie czy da się to zrobić prościej Bascom posiada funkcję skoków do podprogramu w/g indeksu. Portc.4 = 1 'podciagam port - przycisk Dim A As Byte , B As Byte Declare Sub Temp Declare Sub Temp2 Declare Sub Nap Declare Sub Przyc Const Maxa = 2 'maksymalna ilosc podprogramow A = 0 : B = 1 Cls Do 'petla glowna Debounce Pinc.4...
1) Do Debounce dodaj dopiski SUB 2) Program prawdopodobnie wywala ci się na pierwszym Lookup od setek, szukasz po CYFRA zamiast TEMP (wywalenie to być nie musi ale może być problem) 3) Zrób najprostszy test: wywal te swoje lookupy, przyciski i resztę kombinacji. Na sztywno przypisz cyfry, zrób ich lookup i wyślij na wyświetlacz. Zobacz czy chociaż to...
Nie ma to jak odpowiadac samemu sobie ;) Ale być może ktoś z tego skorzysta, więc podam przykałd: config portd = &B00000000 'wszystkie piny jako wejście na porcie D portd = &B11111111 'wymuszamy stan wysoki na wszytskich wejściach (podciagamy - port ma wudowane rezystory podciagajace) config debounce = 30 'zwiększamy opóźnienie eliminacji drgań styków...
Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down 'Start Timer1 Dim I As Integer Config Portb = 255 Portb = 0 Config Portd = &B0000000 Portd = &B1110111 Dim A As Byte Do Debounce Pind.0 , 0 , K , Sub Loop End...
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
1. Wszystkie zmienne powinny być typu takiego, który jest w stanie pomieścić wszystkie możliwe wartości, które mogą wystąpić, czyli w tym przykładnie zmienne WYNIK i WYNIK2 powinny być typu WORD 2. Zmienne T, S, D, J są w tym przykładzie zmieniane przed wyświetleniem i przy następnym wywołaniu podprogramu wychodzą głupoty. Sprawdz coś takiego: Dim J...
Pomyśl logicznie :) Skoro z głowngo programu wybierasz podprogram 1 i wchodzisz do niego, a jego konstrukcja wyglada tak: Podpgoram_1: Do // jakies instrukjce Loop To jakchcesz teraz przjesc do Podprogramu_2 , skoro jestes w petli nieskonczonej w ktorej nie ma znadego warunku na jej opuszczenie? Musial bys w kazdym z podprogramow sprawdzac stan porzyciskow...
Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
a to program Dodano po 11 Mam problem z załącznikiem może teraz.:) Dodano po 6 plik się nie dodaje ?? wyślę tak : $regfile = "m8def.dat" $crystal = 11059200 '$baud = 9600 '$baud = 19200 $baud = 38400 Echo On '******** KONFIGURACJA WYŚWIETLACZA LCD ****************************************... Config Lcd = 20 * 4 ' Deklaracja...
Witam. W petli glownej programu musisz sobie napiac jakas procedurke wyboru podprogramow. Np mozesz uzyc do tego 3 przyciskow - jeden do zwiekszana zmiennej np wybor , drugi do jej zmniejszania atrzeci przycisk do potwierdzenia "enter" . Nie pamietam juz dokaldnie skladni w Bascomie ale moze to byc np tak: DDRB=&b11111000 // - piny 0 1 i 2 portu...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Mając trochę wolnego czasu napisałem parę funkcji do obsługi układu PCF8583. Funkcja która ustawia godzinę i datę zapisuje też dane potrzebne do obliczenia pełnego roku, dzień tygodnia jest obliczany automatycznie na podstawie daty. Funkcje Pcf8583_write i Pcf8583_read można wykorzystać do zapisywania/odczytywania danych z wolnej pamięci ram. Dostępne...
Wprawdzie ... to nie humanitarnie z mojej strony dawać niemalże gotowca ... :D [syntax=basic4gl]$regfile = "m2560def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $include "Config_PCF8583.bas" Declare Sub Displaytime() Declare Sub Settime() Declare Sub Cancel() Declare Sub Plus() Declare Sub Minus() Declare Sub Saveandexit() Declare...
stan kursorem na debounce, nacisnij F1 i zobaczysz gdzie masz blad.
Hej! Spróbuj dać opóżnienie np. 250 mili sekund, o tak: Prog_1: waitms 250 call B Return end sub Wydaje mi się poprostu że po nciśnięciu przycisku nawet na chwile to jest wystarczający długo aby program zdorzył poskakać sobie po wszystkich podprogramach i przez to masz takie problemy. Pozdrawiam
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
Przedstawiam Wam tutaj jeden z popularniejszych modułów służących do zasilania silnika krokowego unipolarnego. Moduł wraz z silnikiem krokowym można kupić z Chin w cenie od niespełna 1,5$ z wysyłką, dostępne też na Allegro i innych portalach aukcyjnych. Wymiary płytki to 40,5x23mm. https://obrazki.elektroda.pl/8938706700_... https://obrazki.elektroda.pl/7500966000_...
Poczytaj sobie w helpie o "debounce".
Program napisany w BASCOM AVR i wyskakujące 3 błędy , mogę wiedzieć dlaczego one wyskakują podczas kompilacji , poniżej zamieszczam kodzik. 'podwójny woltomierz i amperomierz (dwa kanały pomiaru napięcia i dwa kanały pomiaru prądu 'UWAGA _ PONOWNE WGRANIE PROGRAMU SKASUJE WARTOŚCI WSP KOREKCJI Z PAMIECI EPROM '---------------------------------------...
Witam.. Mam nastepujacy problem.... Napisalem program w BASCOM do obslugi 3 przyciskow podlaczonych do kolejno p3.0,p3.1,p3.5... przyciski obsluguje za pomoca komendy DEBOUNCE reagujacej na stan niski... Po kazdym nacisnieciu przycisku program czysci wyswietlacz LCD i ustawia zdefiniowany symbol w innym miejscu(odpowiedzio dla dwoch skrajnych przyciskow,...
No właśnie jest to prawie ten sam kod co z książki. Else jednego z Ifów jest w niewłaściwym miejscu i wystąpi ten błąd o którym wspomniałem. A tak z ciekawości: dlaczego nie zastosujesz klasycznego Debounce?
Mój kod while i went wygląda tak: $crystal = 8000000 Config Debounce = 45 Dim A As Byte Dim B As Byte Dim C As Byte Dim D As Byte Dim E As Byte Dim S As Integer B = 1 C = 1 D = 5 E = 5 Config Portc = &B10011001 Portc = &B01111111 Do While Pinc.5 = 1 Xxx: If Pinc.6 = 0 Then Gosub Ttt Else Gosub Ppp Return Ttt: Portc.0 = 0 For A = 1 To B Wait 1 Next Portc.0...
Nie wiem na które pcb patrzysz , to ostatnie do pełnej wersji z pomiarem prądu i napięcia ,patrzę i widzę że jest OK . pin40 i pin39 są podpięte do dzielnika kondensator żeby nie pływał pomiar zbytnio. nie widzę tego o czym piszesz . Wieczorem sprawdzę jeszcze raz i podam zaktualizowane . Ok jest wieczór więc zamieściłem na 2 str. schemat i pcb w eagle...
Pierwsze stosuję procki które maja oporniki . Stosuję zasadę minimalnego połączenia , żeby była zachowana . Zasilanie musi pochodzić ze wspólnego źródła ale zawsze procesor musi mieć oddzielny stabilizator . Napięcie referencyjne robię tak jak zaleca to producent procka (chyba wie co produkuje) Zawsze stosuję 7805 bo wiem że jest OK i mam zawsze 5.02V(byle...
Zmień całkowicie podejście do pętli Do...loop. Jeżeli zaczynasz zabawę z programowaniem stosuj tylko jedną pętlę Do..loop Wszystko co będziesz pisał umieszczaj w tej jednej pętli , nigdy nie stosuj Wait'a , nie skacz niepotrzebnie do rozbudowanych podprogramów itd. Kolego leon1313 Zgadzam się z Tobą ( wcześniej przecież napisałem co sądzę o DEBOUNCE...
Do obsługi przycisków w Bascom-ie istnieje funkcja "Debounce". Config Debounce = 45 ... Debounce Pind.1 , 0 , Ustawienia , Sub ... Ustawienia: Debounce Pind.1 , 0 , Ustawienia2 , Sub ... Return Ustawienia2: ... Return Tak "brzmi" lepiej :wink: Pozdrawiam Piotrek Sz.
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
Program poprawiłem, ale dalej jest problem z drugim timerem tzn. działa tylko z TIMER0 , działa klawiatura, funkcja rozpędzania wirnika. włączenie drugie timera wiesza program. Zamieszczony program (tylko z TIMER0) działa fizycznie. [syntax=vbnet] $regfile = "m2560def.dat" $crystal = 16000000 '$sim '***************************************... Config...
nie wiem jak w avr ale w 8051 byla funkcja debounce ktora eliminowla problem drgania stykow.
jesli programujesz w bascom to uzyj debounce , pin poprzez rezystor do zasilania a switch ma zwierac do drugiego bieguna zasilania.
Witam Z ciekawości uruchomiłem czujnik MPU6050, kod wykorzystałem z jednej z niemieckich stron - poniżej. Nie jestem pewien, czy kod jest poprawny, bo wyniki są bardzo "ruchliwe". Tzn. gdy płytka czujnika leży nieruchomo na stole to wyniki się zmieniają i o to sporo. Przykładowo: Accx zmienia się od np 10 do 270 Accy cały czas jest duże - nawet ponad...
A dlaczego po: Locate 4 , 2 If Pind.2 = 0 Then Lcd Chr(1) Else Lcd " " End If nie ma następnego LOCATE?? A do czego to LOCATE ma być potrzebne skoro piszesz na LCD znak za znakiem? Wyświetlacz pamięta ostatnią pozycję kursora :) Mam jeszcze jedno pytanie. Czy jak w pętli jest 3x DEBOUNCE to przed pętlą trzeba wpisać : 3x Config Debounce...
Dzień dobry ! Sprawdź ten kod: [syntax=vbnet] $regfile = "attiny2313.dat" $crystal = 1000000 $hwstack = 8 $swstack = 16 $framesize = 32 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Porta.0 , Db6 = Portd.1 , Db7 = Porta.1 , E = Portb.3 , Rs = Portb.4 Config Lcd = 16 * 1 Cursor Off Cls Const Wartosc_timera = 131 Config Timer0 = Timer , Prescale = 8 On...
Cześć, Zwróciły moją uwagę 3 rzeczy: 1. Program w Bascom musi mieć część główną- musi ona być zakończona instrukcją "END" a u ciebie jej nie ma. Nie za bardzo wiem jak kompilator przetłumaczy taki program, ale na pewno nie tak jak chciałby programista. 2. Cytuję fragment procedury i od razu podkreślę to o co mi chodzi Do Debounce P3.2 , 0 , Poczekaj...
Poczytaj sobie w helpie Bascoma o poleceniu Debounce do obsługi klawiszy - tak na początek tej drogi ;)
Musisz wyeliminować drganie styków. Możesz użyć debounce lub dać np 200 ms opóźnienia pomiędzy dwukrotnymi sprawdzeniami
Witam Patrz DEBOUNCE pin_portu , stan , etykieta w Help
bascom debounce debounce debounce debounce przerwa
ferryt kabel zasilający załączyć kliknąć matryca świecić czerwony
opalarka einhell opalarka einhell
Mercedes SLK 200 R171 lokalizacja modułu sterowania fotelem, N32/1, N32/2, pod siedziskiem Telewizor widzi WiFi, ale nie łączy - rozwiązania