|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 12 27, 10:01. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » arduino mygtuku programavimo vingrybes
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 16, 10:49 |
|
|
|
Sveiki, gal pagelbėsit ir uzvesit ant kelio. Gaminu sejamosios "kompiuteri" kuris isjungia seklavamdzius kai reikia daryti tech. veze.
Veikimas : Kai nusileidzia padargas paspaudzia galinuka. Kol jis nuleistas visada buna "HIGH". Kai nusileidzia penkta karta ijungiu isejima.
Noriu pasidaryti garsine indikacija, kai mygtukas pasidaro "HIGH" buzeris viena karta pypteltu ir viskas, o galinukas toliau lieka "HIGH", ir pypteltu kai bus vel "HIGH"
imetu kodo teksto gabaliuka, kur bandziau su millis padaryt... mintis tokia
padarau laika isjungto 2h, o ijungto 1s bet nepavyksta. Gal metodas visai netinkamas. Prasau uzveskit ant kelio.
p.s as neprogramuotojas, labiau kopijuotojas megejas
Kodas: |
void garsine_indikacija ()
{
if (buttonState == HIGH && buzer_state == LOW ){
buzer_state =HIGH;
if( buzer_state ==HIGH )
{
if( (millis()- rememberTime) >= buzer_on_laikas){
buzer_state = LOW;
rememberTime=millis();
}
}
}
else
{
// if(buttonState == LOW ){
// buzer_state =LOW;
// }
if( (millis()- rememberTime) >= buzer_off_laikas){
buzer_state =LOW;
rememberTime=millis();
}
}
digitalWrite(buzeris,buzer_state);
Serial.println(buzer_state);
}
|
|
|
Paskutinį kartą redagavo kactuz, 2022 03 16, 15:07. Redaguota 1 kartą |
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 16, 12:03 |
|
|
|
Beje, ar valdiklis daro dar kažkokius kitus darbus ar tik paleidžia buzzerį? Antru atveju viską galima padaryti paprasčiau. |
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 16, 13:54 |
|
|
|
Susirašyk normalų algoritmą, kas turėtų vykti, arba laikinę diagramą tų reikiamų LOW/HIGH lygių, tuomet bus viskas paprasčiau.
Kas liečia tiesiog indikaciją ir jei tai ypač susiję su kažkokiu avariniu stabdymu, tuomet pasitikėčiau labiau vien aparatinės dalies sprendimu. |
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 16, 14:20 |
|
|
|
XgN rašo: |
Susirašyk normalų algoritmą, kas turėtų vykti, arba laikinę diagramą tų reikiamų LOW/HIGH lygių, tuomet bus viskas paprasčiau. |
Kai pašnekovas - neprogramuotojas, kai kurių burtažodžių jis gali ir nesuprasti
Bet kokiu atveju, reikia daugiau infos; kuo daugiau raidžių, tuo geriau. |
|
|
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 16, 15:06 |
|
|
|
Veikti "aparatas" turetu taip:
Padargas (sejamoji) nuleidziama ir galinukas pasidaro "HIGH" ( i LOW pereina kai padargas pakeliamas ). Ir taip skaiciuoju iki 4 kartu kai buna 5'tas kartas ijungiu isejima (perverciu relyte). Isejimas buna aktyvus kol padargas nuleistas. Kai pakeliamas resetinu counteri i "0" ir vel isnaujo ...
O mano klausimas, kad neziureti visa diena i LCD kur isvedu counterio reiksme. Noriu kad kiekviena karta nuleidus padarba butu trumpas garsinis signalas. (Jis reikalingas nes buna kas nors istringa i padarga ir nenusileidzia) ir pasimeta counteris ko pasekoje technoligine veze buna ne ten kur turetu buti.
Gaunasi kad kai galinukas aktyvuojamas (HIGH busena) darytu auksciau aprasyta funkcija IR aktyvuotu trumpam laiko tarpui (gyvai pasibandyti kokiam tiksliai laiko tarpui kad girdetusi dirbant traktoriui) buzerio isejima (galinukas lieka HIGH)
pridedu visa koda ( as cia ji susiklijavau ir visokiu pavyzdziu .. labai nesijuokit. Kai traktoristai ir programuot pradeda taip buna )
nuoroda i simuliacija :
https://wokwi.com/projects/326213138385994323
Kodas: |
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int buzeris = 13; //buzerio realus bus 13
int rele = 12; //pakeista is 7
int Led1 = 11; //pakeista is 12
int Counter = 0;
int kord = 8;
int mygtukas1 = 2; //Mygtukas 1 yra is sejamosios, didina counteri su sek uzlaikymu.
int mygtukas2 = 3; // rezervas
int mygtukas3 = 4; // rezervas
int mygtukas4 = 5; // Resetas counterio pakeista is 5
int mygtukas5 = 6; // rezervas
int buttonState = 0;
int lastButtonState = LOW;
int buttonState1 = 0;
int lastButtonState1 = LOW;
int buttonState4 = 0;
int lastButtonState4 = LOW;
int buzer_state = LOW; //del buzerio su Milis
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 200; // Laikas kuris nurodo kiek laiko turi buti mygtukas paspaustas, del netikru paspaudimu.
unsigned long buzer_off_laikas = 1000;// OFF time for LED
unsigned long buzer_on_laikas = 1000;// ON time for LED
unsigned long rememberTime=0; // visi sitie migsejimo parametrai
void setup(){
lcd.init();
lcd.backlight();
pinMode(mygtukas1, INPUT);
pinMode(rele, OUTPUT);
pinMode(Led1, OUTPUT);
pinMode(buzeris, OUTPUT); // buzeris kaip out
digitalWrite(buzeris,buzer_state);
lcd.setCursor(1,0);
lcd.print("T. Malinausko ukis");
Serial.begin(9600);
}
void Automatinis (){
int reading = digitalRead(mygtukas1);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) >= debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
Counter = Counter +1;
lcd.setCursor(0,2);
lcd.print(" Ciklas:");
lcd.setCursor(kord,2);
lcd.print(Counter);
Serial.println(Counter);
}
}
}
if (Counter == 5 && lastButtonState == HIGH ) {
digitalWrite(Led1, HIGH);
digitalWrite(rele, HIGH);
lcd.setCursor(0,3);
lcd.print("*daroma tech. veze*");
}
//resetas counterio ""Counter == 5"" kiek vagu
if (Counter == 5 && lastButtonState == LOW){
delay(1000);
digitalWrite(Led1, LOW);
digitalWrite(rele, LOW);
Counter = 0;
lcd.clear();
} else {
lcd.setCursor(1,0);
lcd.print("T. Malinausko ukis");
lcd.setCursor(0,2);
lcd.print(" Ciklas:");
lcd.setCursor(kord,2);
lcd.print(Counter);
}
delay(5);
lastButtonState = reading;
// ---------------------- reseto mygtukas -------------------
int reading4 = digitalRead(mygtukas4);
if (reading4 != lastButtonState4) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) >= debounceDelay) {
if (reading4 != buttonState4) {
buttonState4 = reading4;
if (buttonState4 == HIGH) {
Counter = 0;
lcd.clear();
} else {
lcd.setCursor(1,0);
lcd.print("T. Malinausko ukis");
lcd.setCursor(0,2);
lcd.print(" Ciklas:");
lcd.setCursor(kord,2);
lcd.print(Counter);
}
}
}
delay(5);
lastButtonState4 = reading4;
}
//-----------------kodukas buzeriui------------------------- && buzer_state == LOW
void garsine_indikacija ()
{
if (buttonState == HIGH && buzer_state == LOW ){
buzer_state =HIGH;
if( buzer_state ==HIGH )
{
if( (millis()- rememberTime) >= buzer_on_laikas){
buzer_state = LOW;
rememberTime=millis();
}
}
}
else
{
// if(buttonState == LOW ){
// buzer_state =LOW;
// }
if( (millis()- rememberTime) >= buzer_off_laikas){
buzer_state =LOW;
rememberTime=millis();
}
}
digitalWrite(buzeris,buzer_state);
Serial.println(buzer_state);
}
// ------------------- ---------------------------------------
void loop() {
Automatinis();
garsine_indikacija ();
}
|
|
|
|
|
|
|
|
arduino mygtuku programavimo vingrybes |
Parašytas: 2022 03 17, 20:34 |
|
|
|
Kodas: |
int prevButtonState = LOW;
void garsine_indikacija ()
{
if (prevButtonState == LOW && buttonState == HIGH)
{
digitalWrite(buzeris, HIGH);
rememberTime = millis();
}
if (millis() - rememberTime > buzer_on_laikas)
digitalWrite(buzeris, LOW);
prevButtonState = buttonState;
}
// buzer_off_laikas, buzer_state - nenaudojami
|
Šito kodo netestavau, rašiau greitai ir nežiūrėdamas į ekraną, tai gali pasitaikyti kokia smulki sintaksės klaidelė. |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|