Questions tagged «i2c»

3
如何在Arduino上使用I2C设备?
我有一些有用的I2C组件,例如16位端口扩展器(MCP23017),我想在各种项目中使用它。 我需要做什么才能使它们与Arduino一起使用?它可以与任何Arduino一起使用,还是需要特定的板子或屏蔽板?
12 i2c 

2
廉价的有线多点网状网络
我希望为交互式舞池制作15 x 15的负载传感器和RGB LED网格。每个节点将由arduino驱动,整个楼层将由RaspberryPi管理。我正在尝试找出使节点与Pi进行通信的最佳方法。理想情况下,网络应具有以下特征: 每节点成本低 Raspberry Pi作为主节点,arduino节点作为从节点 知道每个节点在网格中的位置的能力 修复:如果某个节点发生故障,它并不能消除所有其他节点。 可以轻松更换损坏的节点 每个节点的电子设备之间的距离约为12英寸 主机将距离矩阵5至10英尺。 到目前为止,我一直在努力学习一些想法。 I2C 这将允许每个节点可寻址,但是,似乎Arduino仅允许多达127个地址,并且此矩阵将至少具有225个节点。 SPI 如果以菊花链方式链接,则很容易知道每个节点在矩阵中的位置。但是,如果一个节点要在断开所有通信之后中断所有节点,它将停止通信。(对吗?)我可以将每一行雏菊单独地链接起来,因此,如果发生故障,则只会影响该行。 1-Wire 1-wire也看起来很有希望。我必须弄清楚自己确定节点放置的方式,可以通过多种方式来实现。 自定义串行 每个节点的四个侧面都有一个串行连接(rx / tx)。这将允许它直接与其每个邻居进行通信,并传递未发送给它的消息。如果一个节点发生故障,由于到每个目的地都有多个路径,因此该消息将自动在断开的节点周围路由。这个选项有点疯狂,我宁愿避免一些自定义和令人费解的事情。 USB 这将在每个节点中需要一个USB集线器。 XBee 太贵了。 其他想法或选择?
11 serial  i2c  spi  networking 


7
I2C LCD串行接口板不显示文本(引脚错误?)
我有一个1602液晶显示屏,它可以正常工作。但是,我想通过使用我单独购买的I2C / IIC LCD控制器来释放一些引脚。 虽然控制器似乎在正确的地址上与我的Arduino UNO通信,但我无法显示文本。默认情况下(无代码),LCD似乎有1行,每行16个实心“正方形”。在我的代码中使用地址27时,LCD将变为2行,每行16平方(见下图)。该代码还要求背光灯闪烁3次,这是可行的。但是我只能得到2行正方形。(完整代码位于此问题的底部)。 我正在使用F Malpartida 的LiquidCrystal_I2C库,该库似乎很常用。 我应该使用更好的库吗? 我想知道代码中是否使用了错误的引脚。我在网上看到的所有草图都使用以下引脚: // addr,en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address 但是,我在网上看到的所有1602 LCD的引脚都与我的引脚相同,如下图所示: 这些引脚似乎是标准的: 让我更加困惑的是,LCD板上的引脚从左侧的1开始,但是默认代码的引脚似乎从0开始!因此,我尝试将代码的针脚更改为LCD板上的数字。LCD不再变为两行正方形,并且不再使背光闪烁。然后,我尝试从每个引脚减去1(从0开始),结果相同。然后,我尝试使用默认接脚减去1,结果相同。因此,默认引脚在某种程度上更正确吗?我究竟做错了什么? 是否有其他人得到了这些I2C控制器中的一种来为它们工作,如果可以,怎么做? 完整代码: /* YourDuino.com Example Software Sketch 16 character 2 line I2C Display Backpack Interface labelled …
9 i2c  lcd 

4
无效循环之外的功能如何工作?
我习惯了Arduino草图,其中void setup()一部分可以运行一次,而void loop()一部分会不断循环。当main之外具有void函数时会发生什么void loop()?这些都将保持并行循环还是一个接一个地运行?还是某些void函数仅在满足某些条件时才运行(例如while循环)? 例如,在下面的代码中,void receiveData(int byteCount)和void sendData()函数何时运行? //I2C_test //This code demonstrates communication via an I2C bus between a raspberry pi and an arduino. //When the Raspberry pi (master) sends data to the Arduino (slave), the Arduino uses this //data to control a motor. After the Arduino has recieved data …

1
在I2C中,“收到NACK”是什么意思?
我正在阅读有关I2C的信息。在此站点上: http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission 它说endTransmission()可以返回以下状态代码之一: 0:发送成功。 1:发送缓冲区对于twi缓冲区而言太大。这不会发生,因为在twi.h中设置的TWI缓冲区长度等于在Wire.h中设置的发送缓冲区长度。 2:地址已发送,并且收到了NACK。这是一个问题,主机应发送一个STOP条件。 3:发送数据并接收到NACK。这意味着从站不再有要发送的信息。主机可以发送STOP条件,或重复启动。4:发生另一次twi错误(例如,主机丢失总线仲裁)。 如果我没有在Arduino上连接任何东西(或者在SDA / SCL上都带有上拉电阻),我将始终处于状态2。但是,当没有任何可通信的内容时,如何接收NACK(或其他任何东西)呢?这还意味着其他吗? 这是我的示例代码 #include "Wire.h" void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.beginTransmission(42); Wire.write(0); byte status = Wire.endTransmission(); Serial.println(status); // always prints 2 }
8 i2c 

2
使用I2C刻录草图
确实不是一个纯粹的Arduino问题。我实际上正在使用独立的ATmega168。到目前为止,我一直在使用AVR-ISP编程器(在AVR Studio中工作)对芯片进行编程。完成所有操作后,芯片将被覆盖,我将只能访问I2C引脚。MISO,MOSI等引脚将无法连接。 我只是想知道是否有一种方法可以使用I2C引脚来更新芯片上刻录的程序。我不需要再次刻录引导加载程序,而仅在需要时更新程序。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.