美文网首页
【树莓派+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