Elektronika.lt
 2024 m. gruodžio 27 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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
 
  
Puslapis 11
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 10:49 Pranešti apie taisyklių pažeidimą Atsakyti su citata
kactuz
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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 Smile

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ą
 Re: arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 11:49 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Badas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ne visai aiški užduotis. Ar nori kad pypteltų 1s kaskart kai galinukas verčiasi low->high?
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 12:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Badas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2022 03 16, 12:38 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Mari
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Esu seno kirpimo asmuo ir tokiems dalykams naudociau kieta logika o ne procus
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 13:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
XgN
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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
PranešimasParašytas: 2022 03 16, 14:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Badas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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 Very Happy
Bet kokiu atveju, reikia daugiau infos; kuo daugiau raidžių, tuo geriau.
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 14:25 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Socrates
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Panasu, kad tau reikia "edge detection", t.y. nustatyti, kada mygtukas verciasi is LOW i HIGH.
Cia yra pavyzdys:
https://www.arduino.cc/en/Tutorial/BuiltInExamples/StateChangeDetection

Vietoj Serial.println("on"); pasirasyk, kad tau suveiktu pyptelejimas.

Ten plius dar ir LED'u indikuoja kai mygtukas nuspaustas 4 kartus, tai tu gali pasimodifikuoti kiek tau reikia.
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 16, 15:06 Pranešti apie taisyklių pažeidimą Atsakyti su citata
kactuz
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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 Very Happy )

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
PranešimasParašytas: 2022 03 17, 20:34 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Badas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
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ė.
 arduino mygtuku programavimo vingrybes
PranešimasParašytas: 2022 03 17, 23:02 Pranešti apie taisyklių pažeidimą Atsakyti su citata
kactuz
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Nuosirdziai dekingas, veikia kaip tiketasi Smile
Pradėti naują temą  Atsakyti į pranešimą
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama