美文网首页
【树莓派+arduino实验记录5】弹簧振动开关

【树莓派+arduino实验记录5】弹簧振动开关

作者: Geekero | 来源:发表于2020-07-10 13:29 被阅读0次

    arduino

    const int vibswPin = 8;//the Vibration Switch attach to
    const int ledPin = 13;
    int val = 0; //initialize the variable val as 0
    /***********************************************************/
    void setup()
    {
      pinMode(vibswPin,INPUT);
      pinMode(ledPin,OUTPUT);
      Serial.begin(9600);
    }
    /************************************************************/
    void loop()
    {
      val = digitalRead(vibswPin); //read the value from vibration switch
      Serial.println(val);
      if (val == LOW) //without vibration signal
      {
        digitalWrite(ledPin,HIGH); //turn off the led
        delay(500);//delay 500ms,the LED will be on for 500ms
      }
      else
      {
        digitalWrite(ledPin,LOW); //turn on the led
      }
    }
    /***********************************************************/
    

    树莓派

    C

    #include <wiringPi.h>
    #include <stdio.h>
    
    #define VibratePin 0
    #define Gpin       1
    #define Rpin       2
    
    int tmp = 0;
    
    void LED(int color)
    {
        pinMode(Gpin, OUTPUT);
        pinMode(Rpin, OUTPUT);
        if (color == 0)
        {
            digitalWrite(Rpin, HIGH);
            digitalWrite(Gpin, LOW);
        }
        else if (color == 1)
        {
            digitalWrite(Rpin, LOW);
            digitalWrite(Gpin, HIGH);
        }
        else
            printf("LED Error");
    }
    
    void screen_print(int x){
            if (x != tmp){
                if (x == 0)
                    printf("...ON\n");
                if (x == 1)
                    printf("OFF...\n");
                tmp = x;
            }
    }
    
    int main(void)
    {
        int status = 0;
        int tmp = 0;
        int value = 1;
        if (wiringPiSetup() == -1){ 
            printf("setup wiringPi failed !");
            return 1;
        }
    
        pinMode(VibratePin, INPUT);
    
        while(1){
            value = digitalRead(VibratePin);
            if (tmp != value){
                status ++;
                if (status > 1){
                    status = 0;
                }
                LED(status);
                screen_print(status);
                delay(1000);
            
            LED(status);
            screen_print(status);
            delay(1000);
            }
        }
        return 0;
    }
    

    Python

    #!/usr/bin/env python
    import RPi.GPIO as GPIO
    import time
    
    VibratePin = 11
    Gpin = 12
    Rpin = 13
    
    tmp = 0
    
    def setup():
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(Gpin, GPIO.OUT)
        GPIO.setup(Rpin, GPIO.OUT)
        GPIO.setup(VibratePin, GPIO.IN, pull_up_down=GPIO.PUD_UP) #pull up to high level (3.3V)
    
    def Led(x):
        if x == 0:
            GPIO.output(Rpin, 1)
            GPIO.output(Gpin, 0)
        if x == 1:
            GPIO.output(Rpin, 0)
            GPIO.output(Gpin, 1)
    
    def screen_print(x):
        global tmp
        if x != tmp:
            if x == 0:
                print('    ***********')
                print('   *     ON   *')
                print('   ************')
            if x == 1:
                print('   ************')
                print('   *    OFF   *')
                print('   ************')
            tmp = x
    
    def loop():
        state = 0
        while True:
            if GPIO.input(VibratePin):
                state += 1
            if state > 1:
                state = 0
            Led(state)
            screen_print(state)
            time.sleep(1)
    
    def destroy():
        GPIO.output(Gpin, GPIO.HIGH)
        GPIO.output(Rpin, GPIO.HIGH)
        GPIO.cleanup()
    
    
    if __name__ == '__main__':
        setup()
        try:
            loop()
        except KeyboardInterrupt:
            destroy()
    

    相关文章

      网友评论

          本文标题:【树莓派+arduino实验记录5】弹簧振动开关

          本文链接:https://www.haomeiwen.com/subject/mgxjcktx.html