1401浏览
查看: 1401|回复: 2

从arduino到树莓派学习笔记之按钮控制小灯

[复制链接]
Arduino到树莓派学习笔记之按钮控制小灯
                 -------------------2020.2.5
一、     原理以及连线
1、按键开关实物图
从arduino到树莓派学习笔记之按钮控制小灯图1
2、开关要接一个电阻,下图下拉电阻电路图和实物图
从arduino到树莓派学习笔记之按钮控制小灯图2
下图是它的对应实物连线图
从arduino到树莓派学习笔记之按钮控制小灯图3
3、上拉电阻电路图,连线实物图只要将上图的红和黑接VCCGND位置交换就能实现按键按下是灭,松开时亮。
从arduino到树莓派学习笔记之按钮控制小灯图4
4、下面两图解释了按键进行封装以后的原理图(按键按下时高电平,松开时低电平)

从arduino到树莓派学习笔记之按钮控制小灯图5


从arduino到树莓派学习笔记之按钮控制小灯图6

二、     arduino图形化编程,功能:当按键按下时控制灯亮,当松开按键时灯灭。
从arduino到树莓派学习笔记之按钮控制小灯图7
三、arduino c语言版代码,功能:当按键按下时控制灯亮,当松开按键时灯灭。
int button= 0 ;   //设置全局变量,并初始值为0
void setup()
{
  pinMode( 8 , INPUT);  //设置8号端口为输入模式
  Serial.begin(9600);
  pinMode( 2 , OUTPUT); //设置2号端口为输入模式
  
}
void loop()
{
  button = digitalRead(8) ;  //读取8号端口并赋值给整型变量button
  Serial.print(button);
  Serial.println();
  delay( 500 ); //延时500毫秒
  if (button==1)
  {
    digitalWrite( 2 , HIGH ); //设置2号端口为高电平
    delay( 500 );
  }
  else
  {
    digitalWrite( 2 , LOW ); //设置2号端口为高电平
    delay( 500 );
  }
}
三、     树莓派图形化编程
从arduino到树莓派学习笔记之按钮控制小灯图8
从arduino到树莓派学习笔记之按钮控制小灯图9

四、     树莓派python3代码。功能:实现小灯亮和灭的切换,比较接近平时家里电灯开关的效果。
import RPi.GPIO as GPIO  //引入模块GPIOtime
import time
IR = 24
LED = 25
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)  //设置端口编码方式为BCM编码
GPIO.setup(IR,GPIO.IN)  # 设置该端口为输入模式
GPIO.setup(LED,GPIO.OUT)  # 设置该端口为输出模式
led = 0
while True:
    if GPIO.input(IR) == 1:
        time.sleep(0.3)  # 按键消抖
        led = (led + 1) % 2  # 0110
    if led == 1:
        GPIO.output(LED, GPIO.HIGH)
       # time.sleep(1)
    else:
        GPIO.output(LED, GPIO.LOW)
        #time.sleep(1)
小结:1、在树莓派图形化编程和树莓派python3代码中使用了用变量来记录灯的状态,从而实现从灯灭(0)到灯亮(1)的状态切换。
2、除了用01来记录灯的状态,还可以用奇数和偶数来记录灯的状态,大家可以自己尝试一下。
3、难点是理解按键的上拉电阻和下拉电阻。如何通过调试延时时间来更好的对按键进行消抖。

4、水平有限,就当是给大家抛砖引玉作用,有不妥之处希望大家谅解。   

按键1.png
按键1.png

DFrJ5KYVQaH  中级技匠

发表于 2020-2-13 11:09:30

好文章,收藏学习中
回复

使用道具 举报

kylinpoet  初级技神

发表于 2020-2-17 23:56:12

楼主强大,多谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail