风笛丸 发表于 2013-11-25 19:49:51

【已解决】mpeg2560 连接 GY-30光线感应模块接线及代码问题

本帖最后由 风笛丸 于 2013-12-17 16:50 编辑

本人小白一枚,为了方便,买了mpeg2560 + GY-30光线感应模块,该模块支持avr。但是网上没找到对应接arduino的例子,就按照模块说明书中接avr的方法 sda scl 对应mpeg2560接,add和GND连接接地,vcc接单片机供电。
问题1.这样接法是否正确。
问题2.哪位大大能够提供个简单的代码,拜谢!
问题3.程序代码写的不对,是否会烧坏 mpeg2560。(贵啊~~)
谢谢!
下面是自己乱改的程序,请赐教~
#include <iom16v.h>
int inputPin=20;//这个对应的是SDA口 对应SCL口的时候也一样
void conversion(unsigned int i);
unsigned char display={0,0,0,0,0,' ','l','u','x'};//显示数据
floatn;   
/*******************************
主程序
*******************************/
void setup()
{       
      Serial.begin(9600);
      pinMode(inputPin, INPUT);
}
void loop()            
    {
          delay(200);         
       n=analogRead(inputPin);                
       n=n/1.2;
       Serial.println(n);              
}

监视器中可以读出数字,300左右浮动,光线明暗都差不错,没有什么明显效果。

328522073 发表于 2013-11-25 21:58:43

看一下I2C的用法吧 wire库里面的

风笛丸 发表于 2013-11-26 13:17:35

通讯的倒是找到了挺好的例子,但是GY-30的手册看不懂,感觉应该是要发送一个信号,返回一个光线值,但又不知道发送的信号内容是什么,一头雾水啊。

风笛丸 发表于 2013-11-26 13:26:55

从机应该有个编号吧,比如 Wire.beginTransmission(编号); 不然我信号发给谁呢,GY-30手册上也没找到,有用过这个模块的给指点下啊,谢谢

风笛丸 发表于 2013-12-17 16:50:04


自己网上找的,经实测可用,感谢原作者

Arduino I2C 读取 GY-30 BH1750FVI 照度传感器


GND, VCC 就那么接


SCL, SDA 时钟,数据线接到对应口上

ADD 接 GND 为 'L' 地址模式, 接 VCC 为 'H' 地址模式

=====================================
#include <Wire.h>

// GY-30

// BH1750FVI

// in ADDR 'L' mode 7bit addr

#define ADDR 0b0100011

// addr 'H' mode

// #define ADDR 0b1011100

   
void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

while (!Serial) {

    ; // wait for serial port to connect. Needed for Leonardo only

}

Wire.begin();

pinMode(13, OUTPUT);

   
Wire.beginTransmission(ADDR);

Wire.write(0b00000001);

Wire.endTransmission();

   

}
   

void loop() {

// put your main code here, to run repeatedly:

int val = 0;
   

// reset

Wire.beginTransmission(ADDR);

Wire.write(0b00000111);

Wire.endTransmission();

digitalWrite(13, LOW);

delay(100);
   

Wire.beginTransmission(ADDR);

Wire.write(0b00100000);

Wire.endTransmission();
   

// typical read delay 120ms

delay(120);
   

Wire.requestFrom(ADDR, 2); // 2byte every time

   

for (val=0; Wire.available()>=1; ) {

    char c = Wire.read();

    //Serial.println(c, HEX);

    val = (val << 8) + (c & 0xFF);

}   

val = val / 1.2;

Serial.print("lx: ");

Serial.println(val);
   

Serial.println("OK");

digitalWrite(13, HIGH);

delay(100);

   

}

天天向上/tp 发表于 2014-12-22 18:35:59

谢谢!!!

cmht 发表于 2016-10-15 11:25:37

#include <Wire.h>
// GY-30
// BH1750FVI
// in ADDR 'L' mode 7bit addr
#define ADDR 0b0100011
// addr 'H' mode
// #define ADDR 0b1011100

void setup() {
// put your setup code here, to run once:
Serial3.begin(115200);
while (!Serial3) {
    ; // wait for Serial3 port to connect. Needed for Leonardo only
}

Wire.begin();
pinMode(13, OUTPUT);
Wire.beginTransmission(ADDR);
Wire.write(0b00000001);
Wire.endTransmission();
}
   
void loop() {
// put your main code here, to run repeatedly:
int val = 0;
// reset
Wire.beginTransmission(ADDR);
Wire.write(0b00000111);
Wire.endTransmission();
digitalWrite(13, LOW);
delay(100);
   
Wire.beginTransmission(ADDR);
Wire.write(0b00100000);
Wire.endTransmission();
// typical read delay 120ms
delay(120);

Wire.requestFrom(ADDR, 2); // 2byte every time

for (val=0; Wire.available()>=1; ) {
    char c = Wire.read();
    //Serial3.println(c, HEX);
    val = (val << 8) + (c & 0xFF);
}   
val = val / 1.2;
Serial3.print("lx: ");
Serial3.println(val);
Serial3.println("OK");
digitalWrite(13, HIGH);
delay(100);
}

mcw2 发表于 2017-8-9 10:24:39

求教 怎么同时驱动两个或 多少个 gy-30
页: [1]
查看完整版本: 【已解决】mpeg2560 连接 GY-30光线感应模块接线及代码问题