arduino编程学过之后是学python编程吗

arduino编程学过之后是学python编程吗,第1张

你好,是的,Arduino更好,PYTHON是一种高级桌面语言,类似于JAVA,针对PC编程。微控制器上主要用在树莓派编程。然而树莓派和Arduino最大的区别就是Arduino开放完整全部的PCB设计文件,开放芯片数据表,包括全部寄存器描述和内核框架描述等,而且各种主流语言翻译的都很好包括中文。Arduino后期量产可以根据项目个性化更改PCB,添加和删除板卡上的外设,更改PCB尺寸外形,接口位置等等。树莓派主频600M属于高速板,核心芯片数据表资料不开放,不提供PCB文件,也就几乎无法修改PCB,尺寸,增减外设。用树莓派去开发,后期量产也是需要批量汪旁购买原始树莓派板,外形,尺寸,外设都不能有变化。

Arduino的本质:全世界各厂商主雹激流微控制器底层程序标准化。由顶级高手们编写主流微控制器底层驱动,固化封装成更易用语言,减少BUG,增加终端产品开发效率。弱化项目中嵌入式软件工程师的作用,强化硬件工程师和PCB设计工程师的作用。随着PCB打样技术成熟,价格低廉,完美符合当前市场价值要求。频繁快速打样的价格远远低于程序开发价格。可以避免以往前期平台软件开发大量资金和时间投入,快速进入到项目运营研讨和量产研讨阶段。

树莓派的本质:固化硬件系统,尺寸,性能,外设增减都不可改,必须购买树莓派原版硬件。避免硬件设计,避免PCB工程设计,打样,焊接,调试。使用LINUX系统,强化嵌入式软件工程师尤其是LINUX软件工程师的作用,弱化硬件工程师和PCB设计工程师的作用。随着电子技术的不断进步,硬件新芯片日新月异,这种模式不符合发展潮流,LINUX的随意更改,大量底层驱动软件开发人员水平的良莠不齐,意味着层出不穷的软件BUG和混乱的应用逻辑,最终影响终端产品的效果和源陵袜数据安全性,可以参考早期各行业繁多昙花一现的LINUX嵌入式终端,开发软件平台建设时间久,资金大,运营研讨和量产研讨拖得很久,变数大,风险高,成功率小。好处是,这种模式可以让桌面 *** 作系统的软件工程师和互联网软件公司,找到微控制器应用领域的一个切入点,。应用LINUX系统去分ST,AT,TI,MICOCHIP等硬件芯片公司的终端产品一杯羹,实现过度,后期仍然要转换到灵活硬件设计,固化软件平台开发的轨道上来。

首先树莓派得安装 python-smbus, i2c-tools,

然后修尺耐迅改文件:sudo nano /etc/modules,添加上 i2c-bcm2708 和i2c-dev 这两行,Raspbian还需要在raspi-config中激活i2c.

用 sudo i2cdetect -y 1 查看设备地址,

例子1:LCD2004,设备地址 为0x27;

先写个驱动亩迅调用程陵此序 i2c_driver_lcd.py

import smbus

from time import *

# LCD Address

ADDRESS = 0x27

# commands

LCD_CLEARDISPLAY = 0x01

LCD_RETURNHOME = 0x02

LCD_ENTRYMODESET = 0x04

LCD_DISPLAYCONTROL = 0x08

LCD_CURSORSHIFT = 0x10

LCD_FUNCTIONSET = 0x20

LCD_SETCGRAMADDR = 0x40

LCD_SETDDRAMADDR = 0x80

# flags for display entry mode

LCD_ENTRYRIGHT = 0x00

LCD_ENTRYLEFT = 0x02

LCD_ENTRYSHIFTINCREMENT = 0x01

LCD_ENTRYSHIFTDECREMENT = 0x00

# flags for display on/off control

LCD_DISPLAYON = 0x04

LCD_DISPLAYOFF = 0x00

LCD_CURSORON = 0x02

LCD_CURSOROFF = 0x00

LCD_BLINKON = 0x01

LCD_BLINKOFF = 0x00

# flags for display/cursor shift

LCD_DISPLAYMOVE = 0x08

LCD_CURSORMOVE = 0x00

LCD_MOVERIGHT = 0x04

LCD_MOVELEFT = 0x00

# flags for function set

LCD_8BITMODE = 0x10

LCD_4BITMODE = 0x00

LCD_2LINE = 0x08

LCD_1LINE = 0x00

LCD_5x10DOTS = 0x04

LCD_5x8DOTS = 0x00

# flags for backlight control

LCD_BACKLIGHT = 0x08

LCD_NOBACKLIGHT = 0x00

# set init LCD BACKLIGHT ON or OFF

def lcd_backlight(lcdbl=1):

if lcdbl == 0 :

return LCD_NOBACKLIGHT

return LCD_BACKLIGHT

En = 0b00000100 # Enable bit

Rw = 0b00000010 # Read/Write bit

Rs = 0b00000001 # Register select bit

class lcd(object):

#initializes objects and lcd

def __init__(self,lcd_bl,port=1):

self.addr = ADDRESS

self.bus = smbus.SMBus(port)

self.lcd_bl = lcd_bl

self.lcd_write(0x03)

self.lcd_write(0x03)

self.lcd_write(0x03)

self.lcd_write(0x02)

self.lcd_write(LCD_FUNCTIONSET | LCD_2LINE | LCD_5x8DOTS | LCD_4BITMODE)

self.lcd_write(LCD_DISPLAYCONTROL | LCD_DISPLAYON)

self.lcd_write(LCD_CLEARDISPLAY)

self.lcd_write(LCD_ENTRYMODESET | LCD_ENTRYLEFT)

sleep(0.2)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12491814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存