Programming
Motor and servo control using remote and IR sensor with Arduino
#include
#include
const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo foodServo;
Servo hookServo;
int state = 5;
bool unleashed = false;
int decode(long hex);
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
irrecv.blink13(true);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
hookServo.attach(2);
hookServo.write(180);
foodServo.attach(12);
foodServo.write(90); }
void loop(){
if (irrecv.decode(&results)){
Serial.println(results.value);
if(decode(results.value) != 0){
state = decode(results.value);
}
irrecv.resume();
}
if(state == 5){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
} else if(state == 1){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(1000);
foodServo.write(180);
delay(1700);
foodServo.write(90);
state = 5;
} else if(state == 3){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(1000);
if(!unleashed){
hookServo.write(0);
unleashed = true;
delay(500);
} else {
hookServo.write(180);
unleashed = false;
delay(500);
}
state = 5;
} else if(state == 2){
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
} else if(state == 6){
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
} else if(state == 4){
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
} else if(state == 8){
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
}
delay(50);
}
int decode(long hex){
switch(hex){
case 16582903:
return 1;
case 16615543:
return 2;
case 16599223:
return 3;
case 16591063:
return 4;
case 16623703:
return 5;
case 16607383:
return 6;
case 16619623:
return 8;
default:
return 0;
}
}

Credits to Tan Yuan Pin P1731895 from Group Charlie
Temperature data with esp32
#include
#include
#include
#include "ThingSpeak.h"
#include "secrets.h"
#include
int databus=5;
OneWire oneWire(databus);
DallasTemperature sensors(&oneWire);
float Celcius=0;
char ssid[] = SECRET_SSID; // your network SSID (name)
char pass[] = SECRET_PASS; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)
WiFiClient client;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;
void setup() {
Serial.begin(115200); //Initialize serial
sensors.begin();
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak
}
void loop() {
// Connect or reconnect to WiFi
if(WiFi.status() != WL_CONNECTED){
Serial.print("Attempting to connect to SSID: ");
Serial.println(SECRET_SSID);
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network. Change this line if using open or WEP network
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
// Write to ThingSpeak. There are up to 8 fields in a channel, allowing you to store up to 8 different
// pieces of information in a channel. Here, we write to field 1.
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
delay(500);
while(Celcius<=0){
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
delay(500);
}
Serial.print(" C ");
Serial.println(Celcius);
int x = ThingSpeak.writeField(myChannelNumber,2,Celcius, myWriteAPIKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else{
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
delay(15000); // Wait 20 seconds to update the channel again
}


Done by Chang Chieh Grp Delta