اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه کلید فشاری pushbuton

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در برنامه کلید فشاری pushbuton

    سلام دوستان من یک کلید pushbotun رو به اردینو uno وصل کردم و یک پتانسیومتر رو هم به پایه A0 اردینو وصل کردم میخوام تو سریال مانیتور همینطور که اطلاعات پتانسیومترو میخونه وقتی کلید برای بار اول فشار دادم تو سریال مانیتور کلمه start بنویسه و دوباره همون کلیدرو فشار بدم بنویسه end ..از برنامه debounce مثال ها استفاده کردم ولی درست عمل نمیکنه یعنی بدون اینکه کلیدو بزنی کلمه start و end رو پشت سر هم مینویسه یا کلیدو فشار میدی اصلا عمل نمیکنه ..مقاومت پول اپ هم برا کلید گذاشتم ..برنامه رو در زیر میزارم یه نگاه بکنید ممنون میشم کمکم کنید

    const int buttonpin=2;
    int i=0;
    int buttonstate;
    int lastButtonstate = LOW;
    unsigned long lastDebounceTime = 0;
    unsigned long debounceDelay = 50;
    void setup() {
    Serial.begin(9600);
    pinMode(buttonpin,INPUT);
    }


    void loop() {
    int reading = digitalRead(buttonpin);
    int sensorValue = analogRead(A0);
    if (reading != lastButtonstate) {
    lastDebounceTime = millis();
    }

    if ((millis() - lastDebounceTime) > debounceDelay) {

    if (reading != buttonstate) {
    buttonstate = reading;
    if (buttonstate== HIGH){
    i=i+1;}
    if (i=1){Serial.println("start***start***start***star t***start***start***start***start***");}
    if (i=2){i=0;
    Serial.println("end***end***end***end***end***end* **end***end***end***end***end***end***");
    }}}

    Serial.println(sensorValue);
    delay(200);
    lastButtonstate = reading;
    }

    #2
    پاسخ : مشکل در برنامه کلید فشاری pushbuton

    سلام

    کد زیر رو براتون نوشتم ، البته اگه درست منظور شما رو فهمیده باشم . در ضمن شما باید پایه کلید فشاری رو pull down کنید


    #include <Arduino.h>
    #define KEY 2
    #define POT A0


    bool status = 0;
    int delayTime = 500;
    long int per = 0;


    void setup(){
    Serial.begin(115200);
    pinMode(KEY, INPUT);
    pinMode(POT, INPUT);
    }


    void loop(){
    long int cycle = millis();
    if (digitalRead(KEY) == HIGH){
    if (per - cycle < delayTime){
    per = cycle;
    if (status == HIGH){
    status = LOW;
    } else {
    status = HIGH;
    }
    delay(50);
    }
    (status) ? Serial.println("Start -- Start") : Serial.println("Stop -- Stop");
    }
    Serial.println(analogRead(POT));
    delay(delayTime);
    }
    جدیدترین ویرایش توسط Ahmad58; ۱۰:۰۹ ۱۳۹۶/۰۶/۰۸.

    دیدگاه

    لطفا صبر کنید...
    X