美文网首页
【树莓派+arduino实验记录5】倾斜传感器开关

【树莓派+arduino实验记录5】倾斜传感器开关

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

    Arduino

    const int sigPin = 7; //the number of the tile switch pin
    const int ledPin = 13; //the number of the LED pin
    // variable will change:
    boolean sigState = 0; //variable for reading the tilt switch status
    void setup()
    {
        //initialize the LED pin as an output:
        pinMode(ledPin, OUTPUT);
        //initialize the tilt switch pin as an input:
        pinMode(sigPin, INPUT);
        Serial.begin(9600);
    }
    
    void loop()
    {
        //read the state of tilt switch value:
        sigState = digitalRead(sigPin);
        Serial.println(sigState);
        if (sigState == HIGH)
        {
            //turn LED off:
            digitalWrite(ledPin, LOW);
        }
        else
        {
            //turn LED on:
            digitalWrite(ledPin, HIGH);
        }
    }
    

    树莓派

    C

    #include <wiringPi.h>
    #include <stdio.h>
    #define TiltPin   0
    #define Gpin      1
    #define Rpin      2
    
    void LED(char* color)
    {
        pinMode(Gpin, OUTPUT);
            pinMode(Rpin, OUTPUT);
            if (color == "RED")
        {
            digitalWrite(Rpin, HIGH);
            digitalWrite(Gpin, LOW);
            }
            else if (color == "GREEN")
            {
                digitalWrite(Rpin, LOW);
                    digitalWrite(Gpin, HIGH);
            }
            else
            printf("LED Error");
    }
    
    int main(void)
    {
        if (wiringPiSetup() == -1){
                printf("setup wiringPi failed !");
                    return 1;
            }
            pinMode(TiltPin, INPUT);
            LED("GREEN");
            while(1){
            if (0 == digitalRead(TiltPin)){
                            delay(10);
                            if (0 == digitalRead(TiltPin)){
                    LED("RED");
                                printf("Tilt!\n");
                        }
            }
                    else if (1 == digitalRead(TiltPin)){
                            delay(10);
                            if (1 == digitalRead(TiltPin)){
                    while(!digitalRead(TiltPin));
                                LED("GREEN");
                            }
                    }
            }
            return 0;
    }
    

    Python

    #!/usr/bin/env python
    import RPi.GPIO as GPIO
    
    TiltPin = 11
    Gpin = 12
    Rpin = 13
    
    def setup():
        GPIO.setmode(GPIO.BOARD)   #Numbers GPIOs by physical location
        GPIO.setup(Gpin, GPIO.OUT) #Set Green Led Pin mode to output
        GPIO.setup(Rpin, GPIO.OUT) #Set Red Led Pin mode to output
        GPIO.setup(TiltPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Set BtnPin's mode is input, and pull up to high level(3.3V)
        GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200)
    
    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 Print_screen(x):
        if x == 0:
            print('    *********')
            print('    * Tilt! *')
            print('    *********')
            
    def detect(chn):
        Led(GPIO.input(TiltPin))
        Print_screen(GPIO.input(TiltPin))
    
    def loop():
        while True:      
            pass
    
    def destroy():
        GPIO.output(Gpin, GPIO.LOW) 
        GPIO.output(Rpin, GPIO.LOW)
        GPIO.cleanup()
    
    if __name__ == "__main__":
        setup()
        try:
           loop()
        except KeyboardInterrupt:
           destroy()
    

    相关文章

      网友评论

          本文标题:【树莓派+arduino实验记录5】倾斜传感器开关

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