My Beautiful Night Light With Raspberry Pi
by yoyojacky in Workshop > Lighting
499 Views, 0 Favorites, 0 Comments
My Beautiful Night Light With Raspberry Pi
Recently, I found that I fall in love with the beautiful light on raspberry pi.
I am jacky~, and i love make things on raspberry pi and recently i found that there are a series product for raspberry pi is very cool~
It based on I2C protocol communication, and it so easy to use.
The following pictures are the four products: 1. Docker Pi night light board ( based on ws2812 and communicate with raspberry pi via I2C protocol)
2. Docker Pi 4 channel Relay board ( based on relay module and communicate with raspberry pi via I2C protocol and can be stacked)
3. Docker Pi Power board with Fan ( this is all the same but it can provide 5V / 4A power supply, make sure the pi work properly while statcked)
4. Docker Pi IoT-Node(A) module ( It contains GPS, GSM(GPRS) and Lora module onboard, and still communicate with you pi via I2C protocol)
PS: It's all compatiable with Rasbperry Pi 4B !!!
1. Configuring I2C(Raspberry Pi)
Run sudo raspi-config and follow the prompts to install i2c support for the ARM core and linux kernel Go to Interfacing Options > then I2C > Enable > Done
2. Direct control without programming(Raspberry Pi)
The following script demonstrates turn on and turn off each LED.
#!/bin/bash
for i in $(seq 1 24)
do
i2cset -y 1 0x15 $i 0xFF # turn on the led
sleep 0.5
i2cset -y 1 0x15 $i 0x00 # turn of the led
sleep 0.5
done
3 .Program in Language C(Raspberry Pi)
Create source code and name it "led.c"
#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#define BUTTON_REG_ADDR 0x19
int main()
{
int fd;
int is_press = 1;
int is_draw = 0;
int i = 0;
fd = wiringPiI2CSetup(0x15);
for(i = 1;i<25;i++)
{
wiringPiI2CWriteReg8(fd,i,0x00);
}
for(;;)
{
if (wiringPiI2CReadReg8(fd, BUTTON_REG_ADDR) == 0x01 )
{
is_press++;
is_draw = 1;
wiringPiI2CWriteReg8(fd,BUTTON_REG_ADDR, 0x0);
}
if(is_press && is_draw)
{
is_draw = 0;
for(i = 1;i<25;i++)
{
if(is_press > 3)
is_press = 1;
if(((i + is_press) % 3) == 0)
{
wiringPiI2CWriteReg8(fd,i,0xff);
}else{
wiringPiI2CWriteReg8(fd,i,0x00);
}
delay(100);
}
wiringPiI2CWriteReg8(fd,BUTTON_REG_ADDR, 0x0);
}
}
}
* Compile!
gcc led.c -lwiringPi -o led
Exec It!
./led
* Program in Language Python(Raspberry Pi)
The following code is recommended to be executed using Python 3 and install the smbus library:
import time as t import smbus
DEVICE_BUS = 1
DEVICE_ADDR = 0x15
bus = smbus.SMBus(DEVICE_BUS)
while True:
try:
for i in range(1,25):
bus.write_byte_data(DEVICE_ADDR, i, 0xFF)
t.sleep(0.2)
bus.write_byte_data(DEVICE_ADDR, i, 0x00)
t.sleep(0.2)
except KeyboardInterrupt as e:
print("Quit the Loop")
Step 3. You Will See...
It's shining and blinking.
have fun~