Global warming is affecting the climate of our world worse every day. Countries take many precautions and sign agreements to reduce the effects of global warming. The use of renewable energy sources and the efficient use of energy is an issue that needs attention everywhere, from factories to our rooms. Many reasons such as keeping road and park lighting on in cities due to human error, and the use of high energy consuming lighting tools reduce energy efficiency. Many electronic and digital systems are developed and programmed by engineers to measure the light, temperature and humidity values of the environment and ensure that they are used only when needed and in the right amounts.
In this project, we will create a timer alarm that adjusts for daylight using the light sensor in Picobricks.
MicroPython Codes of the PicoBricks
from machine import Pin,I2C,ADC,PWM #to access the hardware on the pico
from picobricks importSSD1306_I2C #OLED Screen Library
import utime
from picobricks importWS2812 #ws8212 library
#OLED Screen Settings
WIDTH=128HEIGHT=64
sda=machine.Pin(4)
scl=machine.Pin(5)
#initialize digital pin 4 and 5as an OUTPUTforOLED Communication
i2c=machine.I2C(0,sda=sda, scl=scl, freq=1000000)
neo =WS2812(pin_num=6, num_leds=1, brightness=0.3)#initialize digital pin 6as an OUTPUTfor NeoPixel
oled =SSD1306_I2C(128,64, i2c)
ldr =ADC(Pin(27))#initialize digital pin 6as an OUTPUTfor NeoPixel
button =Pin(10,Pin.IN,Pin.PULL_DOWN)#initialize digital pin 10as an INPUTfor button
buzzer =PWM(Pin(20, Pin.OUT))#initialize digital pin 20as an OUTPUTfor buzzer
buzzer.freq(1000)BLACK=(0,0,0)WHITE=(255,255,255)
#RGB black and white color code
oled.fill(0)
oled.show()
neo.pixels_fill(BLACK)
neo.pixels_show()if ldr.read_u16()<4000:
wakeup = True
else:
wakeup = False
while True:while wakeup==False:
oled.fill(0)
oled.show()
oled.text("Good night",25,32)
oled.show()
#Show on OLED and print "Good night"
utime.sleep(1)if ldr.read_u16()40000:
wakeup= False
utime.sleep(1)
#wait for one second
Arduino C Codes of the PicoBricks
#include
#ifdef __AVR__
#include
#endif
#define PIN6
#define NUMPIXELS1
Adafruit_NeoPixel pixels(NUMPIXELS,PIN,NEO_GRB+NEO_KHZ800);
#include
#include "ACROBOTIC_SSD1306.h"
int button;voidsetup(){// put your setup code here, to run once:
Wire.begin();
oled.init();
oled.clearDisplay();
#ifdefined(__AVR_ATtiny85__)&&(F_CPU==16000000)clock_prescale_set(clock_div_1);
#endif
pinMode(10,INPUT);pinMode(27,INPUT);pinMode(20,OUTPUT);
pixels.begin();
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.show();}voidloop(){// put your main code here, to run repeatedly:
oled.setTextXY(4,3);
oled.putString("Good night");if(analogRead(27)<200){while(!(button ==1)){
button=digitalRead(10);
oled.setTextXY(4,2);
oled.putString("Good morning");
pixels.setPixelColor(0, pixels.Color(255,255,255));
pixels.show();tone(20,494);}
oled.clearDisplay();
oled.setTextXY(4,1);
oled.putString("Have a nice day");noTone(20);
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.show();delay(10000);}}
GitHub Page