精华内容
下载资源
问答
  • PHP控制树莓派控制

    2019-11-13 23:00:15
    PHP控制树莓派控制
  • 树莓派控制SG90舵机

    2019-04-25 20:05:09
    树莓派控制SG90舵机
  • 微信+树莓派控制系统.zip
  • 树莓派控制串口舵机,很不错的代码,很详细,一看就学得会
  • 树莓派控制舵机

    千次阅读 多人点赞 2019-12-04 15:13:17
    说在前面: 在网上找了一圈有关树莓派控制舵机的代码,发现好多都是一模一样的,重点是它们都贴着“原创”标签。也许,对于侵犯他人版权惩罚的代价太低了吧。我有时在想,如果让这种侵犯之风蔓延下去的话,定会严重...

    说在前面: 在网上找了一圈有关树莓派控制舵机的代码,发现好多都是一模一样的,重点是它们都贴着“原创”标签。 ^ __ ^!

    一、所需材料

    • 9 G 180°微型舵机。
    • 树莓派4.
    • 5 V 电源。(可选)

    二、PWM如何工作

    树莓派不能直接输出模拟电信号,但我们可以使用PWM(脉宽调制)方法来模拟这一点。我们制作一个固定频率的数字信号,在那里我们将改变脉冲宽度,将“转换”改为“平均”输出电压的电平,我们可以使用这个“平均”电压水平来控制LED亮度。
    频率本身不是重点,而是“占空比”,即脉冲“高”的时间除以波周期之间的关系。例如,假设我们在树莓派的 GPIO上产生一个50Hz的脉冲频率。周期(p)将是频率的倒数或20ms(1 / f)。如果我们的LED达到“半”亮度,我们的占空比必须为50%,这意味着“脉冲”将是10ms的“高”。而在这里,我们将用“占空比”来定义舵机的位置。

    三、接线

    一般舵机有三根控制线,分别为黄、红、灰(黑),这三根线分别接树莓派GPIO数据输出引脚、5V电源正极、GND。
    对于舵机的供电,可以选择树莓派的5V输出,但为了树莓派的安全起见,建议用外部5V电源。充电宝就可以。

    四、舵机校准

    1. 舵机参数

    首先,你要清楚你的舵机参数。我使用的舵机基本参数如下:

    范围 0°~180°
    电源 5VDC
    工作频率 50Hz(周期:20 ms)
    脉冲宽度 1ms~2ms

    理论上,1ms对应舵机0°,1.5ms对应舵机90°,2ms对应舵机180°。
    在利用Python编写舵机位置时,利用的是上述位置所对应的的“占空比”。

    位置角度 脉冲宽度 占空比
    1ms 5.0%
    90° 1.5ms 7.5%
    180° 2ms 10%

    其中,占空比 = 脉冲宽度/周期。 5.0% = 1ms/20ms
    可以看出,占空比理论上应该在5%到10%之间变化。但是,舵机在实际上会有一些误差,需要我们校正,得到它的准确值。

    1. 舵机校正
      在树莓派中运行以下代码:
    #!/usr/bin/env python3
    import RPi.GPIO as GPIO
    import time
    GPIO.setmode(GPIO.BOARD) # GPIO引脚编号的两种方式之一,另一种是BCM。所用编号方式不同,pin也不同。
    GPIO.setwarnings(False# 禁用警告。
    GPIO.setup(pin,GPIO.OUT) # pin为你所接的数据输出GPIO引脚。
    p = GPIO.PWM(pin,50) # 在pin脚上产生频率为50HZ的PWM信号。
    p.start(0) # 在引脚上设置一个初始PWM信号。
    p.ChangeDutyCycle(3) # 通过输入不同的“占空比值”来观察舵机的位置变化,这里的“占空比”是3%。
    time.sleep(1)
    p.stop() # 停止PWM。
    GPIO.cleanup() # 清理GPIO。
    

    最终得到的角度和“占空比”的关系为:

    角度 占空比
    2%
    90° 7%
    180° 12%

    进而,我们可以通过一组简单的二元一次方程,得到占空比和角度的关系表达式:
    DutyCycle = angle/18 + 2

    五、舵机控制代码

    #!/usr/bin/env python3 
    import RPi.GPIO as GPIO
    import time
    def setServoAngle(angle):
       GPIO.setmode(GPIO.BOARD)
       GPIO.setwarnings(False)
       GPIO.setup(32, GPIO.OUT)
       tilt = GPIO.PWM(32, 50)
       tilt.start(0)
       DutyCycle = angle/18 + 2
       tilt.ChangeDutyCycle(DutyCycle)
       time.sleep(1)
       tilt.stop()
    c = input("If you want to continue, type 'c' please. Type 'e' to end.")
    while c == 'c':
       angle = input('Please type an angle:')  # input输入的是字符串,需要用int()函数转化成数字。
       angle = int(angle)
       setServoAngle(angle)
       c = input("'c' or 'e'?") 
    GPIO.cleanup()
    exit()
    

    如有问题,欢迎评论区交流啊!

    展开全文
  • 树莓派 如何用树莓派控制LED灯条
  • android 通过 树莓派 控制台灯哦哦
  • 树莓派——树莓派控制继电器组 一、接线 树莓派的5v——继电器的VCC 树莓派的0v——继电器的GND 其他的四根线为信号线 继电器IN1——IN4分别接到树莓派的GPIO26, GPIO27,GPIO28,GPIO29。 二、代码 #include <...

    树莓派——树莓派控制继电器组

    一、接线
    树莓派的5v——继电器的VCC
    树莓派的0v——继电器的GND

    其他的四根线为信号线
    继电器IN1——IN4分别接到树莓派的GPIO26,
    GPIO27,GPIO28,GPIO29。

    二、代码

    #include <wiringPi.h>
    #include <stdio.h>
    #include <string.h>
    /*定义四个针脚*/
    
    #define  SWI1 26
    #define  SWI2 27
    #define  SWI3 28
    #define  SWI4 29
    
    int  main()
    {
           char cmd[12]={'\0'};
           //把命令设置为字符串,初始化为空字符。
    
           if(wiringPiSetup()==-1)//设备初始化
           {
                 printf("硬件接口初始化失败\n");
                 return -1;
           }
    
           /*设置SWI1——SWI4为输出引脚*/
           pinMode(SWI1,OUTPUT);
           pinMode(SWI2,OUTPUT);
           pinMode(SWI3,OUTPUT);
           pinMode(SWI4,OUTPUT);
    
           //设置SWI1——SWI4引脚上电之前为断开状态
           digitalWrite(SWI1,HIGH);
           digitalWrite(SWI2,HIGH);
           digitalWrite(SWI3,HIGH);
           digitalWrite(SWI4,HIGH);
    
           while(1)
      {
           printf("请输入1/2/3/4on off:off——断开开关,on——导通开关\n");
           memset(cmd,'\0',sizeof(cmd));//初始化
           //scanf("%s",&cmd);
           gets(cmd);
    
           if(strcmp(cmd,"1 on")==0)
          {
                digitalWrite(SWI1,LOW);  
                //低电平导通开通
          }
    
           else  if(strcmp(cmd,"1 off")==0)
          {
                digitalWrite(SWI1,HIGH);  
                //高电平导通断开
          }
    
           if(strcmp(cmd,"2 on")==0)
          {
                digitalWrite(SWI2,LOW);  
                //低电平导通开通
          }
    
           else  if(strcmp(cmd,"2 off")==0)
          {
               digitalWrite(SWI2,HIGH);  
               //高电平导通断开
          }
        
         
           if(strcmp(cmd,"3 on")==0)
          {
              digitalWrite(SWI3,LOW);  
              //低电平导通开通
          }
    
           else  if(strcmp(cmd,"3 off")==0)
          {
              digitalWrite(SWI3,HIGH); 
               //高电平导通断开
          }
    
           if(strcmp(cmd,"4 on")==0)
          {
             digitalWrite(SWI4,LOW);  
             //低电平导通开通
          }
    
           else  if(strcmp(cmd,"4 off")==0)
          {
             digitalWrite(SWI4,HIGH);  
             //高电平导通断开
          }
    
           else
           {
               printf("请输入正确指令\n");
           }
    
      }
    }
    

    运行时要链接库:gcc demo1.c -lwiringPi
    执行代码:./a.out

    继电器的灯亮起:
    每一个都要执行开关操作
    q
    继电器亮
    在这里插入图片描述
    继电器灭
    在这里插入图片描述
    一键关闭和开启

    #include <wiringPi.h>
    #include <stdio.h>
    #include <string.h>
    /*定义四个针脚*/
    
    #define  SWI1 26
    #define  SWI2 27
    #define  SWI3 28
    #define  SWI4 29
    
    int  main()
    {
           char cmd[12]={'\0'};
           //把命令设置为字符串,初始化为空字符。
    
           if(wiringPiSetup()==-1)//设备初始化
           {
                 printf("硬件接口初始化失败\n");
                 return -1;
           }
    
           /*设置SWI1——SWI4为输出引脚*/
           pinMode(SWI1,OUTPUT);
           pinMode(SWI2,OUTPUT);
           pinMode(SWI3,OUTPUT);
           pinMode(SWI4,OUTPUT);
    
           //设置SWI1——SWI4引脚上电之前为断开状态
           digitalWrite(SWI1,HIGH);
           digitalWrite(SWI2,HIGH);
           digitalWrite(SWI3,HIGH);
           digitalWrite(SWI4,HIGH);
    
           while(1)
      {
      printf("请输入1/2/3/4/all on/off:off——断开开关,on——导通开关\n");
           memset(cmd,'\0',sizeof(cmd));//初始化
           //scanf("%s",&cmd);
           gets(cmd);
    
           if(strcmp(cmd,"1 on")==0)
          {
               digitalWrite(SWI1,LOW);  
               //低电平导通开通
          }
    
           else  if(strcmp(cmd,"1 off")==0)
          {
               digitalWrite(SWI1,HIGH); 
                //高电平导通断开
          }
    
           if(strcmp(cmd,"2 on")==0)
          {
               digitalWrite(SWI2,LOW);  
               //低电平导通开通
          }
    
           else  if(strcmp(cmd,"2 off")==0)
          {
               digitalWrite(SWI2,HIGH); 
                //高电平导通断开
          }
    
          if(strcmp(cmd,"3 on")==0)
          {
               digitalWrite(SWI3,LOW);  
               //低电平导通开通
          }
    
           else  if(strcmp(cmd,"3 off")==0)
          {
               digitalWrite(SWI3,HIGH); 
                //高电平导通断开
          }
    
           if(strcmp(cmd,"4 on")==0)
          {
               digitalWrite(SWI4,LOW);  
               //低电平导通开通
          }
    
           else  if(strcmp(cmd,"4 off")==0)
          {
               digitalWrite(SWI4,HIGH); 
                //高电平导通断开
          }
    
    
           if(strcmp(cmd,"all on")==0)
          {
                //低电平导通开通
               digitalWrite(SWI1,LOW);  
               digitalWrite(SWI2,LOW);
               digitalWrite(SWI3,LOW);
               digitalWrite(SWI4,LOW);
          }
    
          else  if(strcmp(cmd,"all off")==0)
           {
                 //高电平导通断开
                digitalWrite(SWI1,HIGH); 
                digitalWrite(SWI2,HIGH);
                digitalWrite(SWI3,HIGH);
                digitalWrite(SWI4,HIGH);
           }
    
           else
                {
                       printf("请输入正确指令\n");
                }
    
      }
    }
    

    运行效果:
    一键全开:
    在这里插入图片描述
    在这里插入图片描述

    一键全关
    在这里插入图片描述
    在这里插入图片描述

    ——@上官可编程

    展开全文
  • mpu6050树莓派控制.c

    2019-12-19 16:55:24
    树莓派控制多个mpu6050做采集用,并含有HC-SR04超声波传感器测距,这是我自己玩的,需要的可以拿去观摩!
  • 树莓派控制LED灯闪烁.rar
  • 树莓派控制引脚

    2019-05-05 16:31:18
    树莓派控制引脚 #include<wiringPi.h> #include<stdio.h> #include<stdlib.h> int main (int argc,char* argv[]) { printf("into \n"); if (argc < 2) { printf("Usage example: ./...

    树莓派控制引脚

    #include<wiringPi.h>
    #include<stdio.h>
    #include<stdlib.h>
    
    int main (int argc,char* argv[])
    { 
    	printf("into \n"); 
    	if (argc < 2) 
    	{ 
    		printf("Usage example: ./led 4 \n"); 
    		return 1; 
    	} 
    	int pinNumber = atoi(argv[1]); 
    	if (-1 == wiringPiSetup()) 
    	{ 
    		printf("Setup wiringPi failed!"); 
    		return 1; 
    	} 
    	pinMode(pinNumber, OUTPUT); // set mode to output 
    	while(1) 
    	{ 
    		digitalWrite(pinNumber, 1); // output a high level 
    		delay(1000); 
    		digitalWrite(pinNumber, 0); // output a low level 
    		delay(1000); 
    	} 
    	return 0; 
    }
    
    展开全文
  • 树莓派控制Arduino

    作者:Rishabh Jain
    编译:Tony

    树莓派控制Arduino

    尽管就其应用程序和结构而言,Raspberry Pi和Arduino是两种不同的硬件,但是它们都被认为是两个相互竞争的开源硬件平台。他们俩都有非常强大的社区和支持。今天,我们将稍作更改,并向您展示如何利用它们。如果您同时拥有Arduino和Raspberry pi板,那么本文将向您展示如何使用Raspberry pi和Python控制Arduino

    我们将使用PyFirmata固件通过Raspberry Pi python脚本向Arduino发送命令。PyFirmata基本上是python程序的预构建库包,可以将其安装在Arduino中,以允许任何计算机上的python脚本与Arduino之间进行串行通信。这个python包可以访问Arduino上的任何引脚。因此,这里我们将使用Raspberry pi在Arduino上运行python程序。

    因此,在本教程中,我们将利用该库,并在Arduino开发板中使用它来通过Raspberry Pi控制Arduino

    要求

    • 安装了Raspbian操作系统的Raspberry Pi
    • Arduino Uno或任何其他Arduino开发板
    • Arduino USB线
    • 发光二极管

    在本教程中,我将通过HDMI电缆使用外部监视器与Raspberry Pi连接。如果没有监视器,则可以使用SSH客户端(Putty)或VNC服务器通过笔记本电脑或计算机连接到Raspberry pi。

    使用Raspberry Pi在Arduino中安装PyFirmata

    要在Arduino中上传PyFirmata固件,我们必须在Raspberry Pi中安装Arduino IDE。请按照以下步骤进行安装:

    • **步骤1:**将Raspberry Pi连接到互联网。打开命令终端并键入以下命令,然后按Enter
    sudo apt-get -y install arduino python-serial mercurial
    

    等待几分钟,这将需要一些时间。该命令将在您的Raspberry Pi中安装Arduino IDE。

    • **步骤2:**现在,我们将使用指定的github安装pyFirmata文件:
    git clone  https://github.com/tino/pyFirmata
    

    然后运行以下命令:

    cd pyFirmata 
    sudo python setup.py install
    
    • 步骤3: 我们已经安装了所有必需的文件和设置。

    现在,使用USB电缆将Arduino开发板与Raspberry Pi连接,然后在终端窗口中键入arduino启动Arduino IDE 。

    启动arduino

    • **步骤4:-**然后键入lsusb命令以检查Arduino是否与树莓派连接。

    在Arduino IDE中,转到工具,然后选择板子和串行端口。

    • **步骤5:**通过单击文件->示例->固件->标准固件,然后单击上载按钮,在Arduino上上传PyFirmata固件,如下所示。

    上传固件

    我们已经在Arduino板上成功安装了pyFirmata固件。现在,我们可以使用Raspberry Pi控制Arduino。

    为了演示,我们将通过在Raspberry Pi中编写python代码来使Arduino上的LED闪烁和渐变。

    代码说明

    对于编码部分,您应该阅读pyFirmata的文档以更好地理解,我们将使用pyFirmata函数编写代码。

    在Raspberry Pi上打开您喜欢的文本编辑器,然后导入pyFirmata库。

    import pyfirmata
    

    在Arduino上定义引脚以连接LED

    led_pin = 9
    

    现在,我们必须使用pyfirmata.Arduino()函数编写连接Arduino板的串行端口名称,然后通过在板变量中分配端口来创建一个实例。

    board = pyfirmata.Arduino("/dev/ttyACM0")
    print "Code is running”
    

    在while循环中,使用board.digital[].write()函数将led引脚设置为高电平和低电平,并使用board.pass_time函数提供延迟。

    while True:
        board.digital[led_pin].write(0)
        board.pass_time(1)        
        board.digital[led_pin].write(1)
        board.pass_time(1)
    

    我们的代码已经准备好,通过以.py为扩展名的文件来保存该代码。

    打开命令终端,然后键入python blink.py以在Arduino板上运行代码。确保使用USB连接线将Arduino开发板与Raspberry Pi开发板连接。

    现在,您可以在Arduino板上看到LED闪烁。

    使用pyFirmata在Arduino上使LED渐变

    现在,我们将编写用于使LED渐变的代码,以使您更加熟悉pyFirmata函数。此代码与上一个代码一样简单。您必须使用两个for循环,一个用于增加亮度,另一个用于降低亮度。

    在此代码中,我们以不同的方式定义了引脚,例如led = board.get_pin(‘d:9:p’),其中d表示数字引脚。这是pyFirmata库的功能,部分代码如下:

    led = board.get_pin('d:9:p')            
    while True:
    # increase
        for i in range(0, 10):
            brightness = brightness + 0.1
            print "Setting brightness to %s" % brightness
            led.write(brightness)
            board.pass_time(delay)
    

    现在,您可以在系统中添加更多传感器,尝试使用Raspberry pi和python脚本构建它们。

    现象

    附上完整代码:

    #Python code for LED blink:
    import pyfirmata
    led_pin = 9
    board = pyfirmata.Arduino("/dev/ttyACM0")
    
    while True:
        board.digital[led_pin].write(0)
        board.pass_time(1)
        board.digital[led_pin].write(1)
        board.pass_time(1)
    
    #Python code for Fading LED:
    import time
    import pyfirmata
    
    delay = 0.3
    brightness = 0
    board = pyfirmata.Arduino("/dev/ttyACM0")
    led = board.get_pin('d:9:p')    
            
    while True:
    # increase
        for i in range(0, 10):
            brightness = brightness + 0.1
            print "Setting brightness to %s" % brightness
            led.write(brightness)
            board.pass_time(delay)
    
    # decrease
        for i in range(0, 10):
            print "Setting brightness to %s" % brightness
            led.write(brightness) 
            brightness = brightness - 0.1     
            board.pass_time(delay)
    

    关注微信公众号:TonyCode
    Arduino学习交流群:868283450

    更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注:
    扫码加入微信公众号:TonyCode

    展开全文
  • 树莓派8:树莓派控制继电器

    千次阅读 2020-09-18 22:15:29
    树莓派控制继电器 1.继电器:(可编程电子开关) 一、继电器的定义 继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。...
  • blinker-pi:基于blinker的树莓派控制
  • 193_树莓派控制GPIO口

    2019-08-14 15:24:58
    树莓派控制GPIO口
  • 树莓派控制继电器

    2021-02-09 15:43:05
    树莓派控制继电器 一、继电器和树莓派接线 (1)在树莓派的开发环境中,敲入指令: gpio- readall,所列出的表,对应的时树莓派的IO口(接线时把USB口朝自己)。 (2) 树莓派的3.3v和继电器的VCC连接起来(正极) ...
  • 树莓派控制小车追踪物体原理和源码,Python+Opencv实现,不错的小项目。入门ai的资源,识别、追踪和控制。
  • 树莓派控制 D1 移动

    千次阅读 2016-12-14 20:08:42
    PC 通过 ssh 方式远程登录树莓派控制 D1 移动
  • 树莓派控制超声波传感器

    千次阅读 2017-07-25 13:43:03
    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下。 //树莓派控制超声波传感器 //...
  • 树莓派控制57步进电机

    千次阅读 2020-07-24 23:18:35
    使用树莓派控制57步进电机。 二、硬件设备 57两相四线步进电机 ×1 DM542驱动器 ×1 树莓派 ×1 3.3V-5V电平转换 ×1 24V / 36V电源 ×1 三孔带插头单头裸尾电源线 ×1 需要自己买电源线(3源, 火线,零线,地线) ...
  • 祖莫皮 带有树莓派控制器的Zumo机器人平台 框图 发展图
  • arduino流速传感器+树莓派控制水泵实现定量浇水。压缩包内有引脚示意图 水流传感器是YF-S201 YF-S201信号线电压过大,不能直接接树莓派 可能会烧坏GPIO口
  • 本系统为树莓派控制98路LED指示灯的管理程序,全套硬件成本在300元内。 使用简单的Get请求实现LED灯的常亮、闪烁等各种灵活控制。
  • 树莓派控制数字舵机转动

    万次阅读 2017-06-18 01:06:34
    使用树莓派控制数字舵机 舵机的线一般是 棕 : GND 红 : VCC 黄: 控制线 我们把GND和VCC接好,然后控制线接到GPIO 16上。 此舵机的介绍说明上活动角度是180度,脉宽范围是500us-2500us,中立区1500us,死区2...
  • 使用树莓派控制led灯板 ws2812

    千次阅读 2019-04-02 12:16:20
    使用树莓派控制led灯板 推荐一个库 Adafruit_NeoPixel 这里是地址:https://github.com/adafruit/Adafruit_NeoPixel 这个原本是在Arduino上控制led的库 github上的介绍: Arduino library for controlling single-...
  • 树莓派控制电机

    2021-03-19 23:47:21
    控制舵机 安装GPIO库 我所使用的python版本为pyhton3.7,因此,可以通过以下命令安装GPIO库: pip3 install rpi.gpio 如果大家没有安装pip,可以通过以下命令进行pip的安装 sudo apt-get install p
  • 树莓派控制无人机实现定点降落:地标识别算法以及控制算法
  • 此代码实现了用树莓派控制RGB LED,用的是wiringPi库中的softPwm库

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,394
精华内容 1,757
关键字:

树莓派控制