code arduino
Plain TextAuthor: ahambridge
12 days ago │ 2,938 B
#include <Wire.h>
// Include the DHT11 library for interfacing with the sensor.
#include <DHT11.h>
// Create an instance of the DHT11 class.
// - For Arduino: Connect the sensor to Digital I/O Pin 2.
// - For ESP32: Connect the sensor to pin GPIO2 or P2.
// - For ESP8266: Connect the sensor to GPIO2 or D4.
DHT11 dht11(5);
#include <Adafruit_NeoPixel.h>
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 8 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 4 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int temperature = 0;
int humidity = 0;
void setup() {
// put your setup code here, to run once:
Wire.begin(8); // join I2C bus with address #8
Wire.onReceive(receiveEvent); // register event
Wire.onRequest(requestEvent); // register event
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
pixels.clear(); //CLEARS LEDS
pixels.setBrightness(100); //(0-255) Brightness
pixels.show(); //SENDS THE QUEUED COMMANDS
Serial.begin(9600); // start serial for output
}
void loop() {
// put your main code here, to run repeatedly:
// Attempt to read the temperature and humidity values from the DHT11 sensor.
int result = dht11.readTemperatureHumidity(temperature, humidity);
// Check the results of the readings.
// If the reading is successful, print the temperature and humidity values.
// If there are errors, print the appropriate error messages.
if (result == 0) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C\tHumidity: ");
Serial.print(humidity);
Serial.println(" %");
} else {
// Print error message based on the error code.
Serial.println(DHT11::getErrorString(result));
}
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany) {
int c = 0;
while (Wire.available()) { // loop through all but the last
c = Wire.read(); // receive byte as a character
Serial.println(c); // print the character
}
if(c == 1)
{
pixels.setPixelColor(0,255,0,0);
}
else if(c ==2)
{
pixels.setPixelColor(0,0,0,0);
}
pixels.show();
}
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent() {
Wire.write(temperature);
Wire.write(humidity);
}