求助:arduino 怎样去读取ET7208 七段音频数据
2015-05-251.1万
AI 快速预览详细
本文介绍了如何使用Arduino读取ET7208七段音频数据的方法。首先,通过具体的代码示例展示了初始化设置和数据读取的过程。接着,提供了详细的调试步骤,帮助用户解决连接和读取过程中可能遇到的问题。最终,用户可以成功读取ET7208的七段音频数据,并将其应用于自己的项目中。
创作许可协议
本项目采用 None(不开放任何权利,保留所有权利) 进行许可。
创作许可协议
本项目采用 None(不开放任何权利,保留所有权利) 进行许可。
int scl = 2;
int sda = 3;
void setup() {
// put your setup code here, to run once:
I2C_Init();
Serial.begin(9600);
}
void loop() {
I2C_start();
i2c_writebyte(0x60);
i2c_writebyte(0x07);
I2C_start();
i2c_writebyte(0x61);
Serial.println(i2c_readbyte(), HEX);
I2C_stop();
pinMode(sda, OUTPUT);
delay(1000);
}
void I2C_Init(void)
{
pinMode(sda, OUTPUT);
pinMode(scl, OUTPUT);
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);
}
void I2C_start(void)
{
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);
delay(1);
digitalWrite(sda, LOW);
delay(1);
digitalWrite(scl, LOW);
}
void I2C_stop()
{
digitalWrite(scl, LOW);
digitalWrite(sda, LOW);
digitalWrite(scl, HIGH);
digitalWrite(sda, HIGH);
}
uint8_t i2c_writebyte(uint8_t d) //写一个字节
{
uint8_t i;
for (i = 0; i < 8; i++)
{
uint8_t temp;
temp = d;
temp = (temp & 0x80);
if (temp == 0x80)
{
digitalWrite(sda, HIGH);
}
else
{
digitalWrite(sda, LOW);
}
d = (d << 1);
delay(1);
digitalWrite(scl, HIGH);
delay(1);
digitalWrite(scl, LOW);
delay(1);
}
digitalWrite(sda, HIGH);
delay(1);
digitalWrite(scl, HIGH);
delay(1);
digitalWrite(scl, LOW);
delay(1);
}
uint8_t i2c_readbyte(void)
{
uint8_t i, i2c_data;
pinMode(sda, INPUT);
i2c_data = 0x00;
for (i = 0; i < 8; i++)
{
i2c_data = i2c_data << 1;
delay(1);
digitalWrite(scl, LOW);
delay(1);
digitalWrite(scl, HIGH);
delay(1);
if (digitalRead(sda) == HIGH)
{
i2c_data = i2c_data + 1;
}
else
{
i2c_data = i2c_data + 0;
}
}
delay(1);
digitalWrite(scl, LOW);
delay(1);
digitalWrite(scl, HIGH);
return i2c_data;
}