//channel id:2302538
//channel api kay:U84HCR8T38OHMX3U
#include <WiFi.h>
#include "ThingSpeak.h"
const int mychannelnumber= 2302538;//digitar numero del canal
const char* myApiKey="U84HCR8T38OHMX3U";//digitar la clave api
const char* server= "api.thingspeak.com";
WiFiClient client;
int led=15;
int pin_musica = 5; // Pin por el que vamos a enviar las notas, debe ser un pin PWM
int pin_sensor = 2;
//Pines para el ultrasonico
int t_p=4;
int e_p=18;
float ss=0.034;
long dur;
float dist_cm;
int Do=261;
int Do_H=523;
int Do_SH=554;
int Re=294;
int Re_H=587;
int Re_SH=622;
int Mi=329;
int Mi_H=659;
int Fa=349;
int Fa_H=698;
int Fa_SH=740;
int Sol=391;
int Sol_S=415;
int Sol_H=783;
int Sol_SH=830;
int La=440;
int La_S=455;
int La_H=880;
int Si=466;
void setup() {
Serial.begin(115200);
pinMode(led, OUTPUT);
pinMode(pin_musica, OUTPUT);
pinMode(pin_sensor, INPUT_PULLUP);
pinMode(t_p, OUTPUT);
pinMode(e_p, INPUT);
noTone(pin_musica);
WiFi.begin("Wokwi-GUEST", "", 6);
while(WiFi.status() !=WL_CONNECTED){
delay(1000);
Serial.println("No esta conectado el WIFI");
}
Serial.println("Wifi conectado");
Serial.println("IP local: "+String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
int sensorValue = digitalRead(pin_sensor);
ThingSpeak.setField(1, 1); // Registra un evento de movimiento en Field1
int sensor = digitalRead(pin_sensor); //Leemos la señal del sensor (0 o 1)
int melodia_star[] = {La,La,La,Fa,Do_H,La,Fa,Do_H,La,Mi_H,Mi_H,Mi_H,Fa_H,Do_H, Sol_S,Fa,Do_H,La,La_H,La,La,La_H,Sol_SH,Sol_H,Fa_SH,Fa_H,Fa_SH,La_S,Re_SH,Re_H,Do_SH,Do_H,Si,Do_H,Fa,Sol_S,Fa,La, Do_H,La,Do_H,Mi_H};
int duracion_star[] ={ 500,500,500,350,150,500,350,150,1000,500,500,500,350,150,500,350,150,1000,500,350,150,1000,500,350,150,500,250,250,125,125,250,250,500,250,250,125,125,250,125,500,375,125,500,375,125,1000};
int notas_star = 41;
int x = ThingSpeak.writeFields(mychannelnumber, myApiKey);
digitalWrite(t_p, LOW);
delayMicroseconds(2);
digitalWrite(t_p, HIGH);
delayMicroseconds(10);
digitalWrite(t_p, LOW);
dur = pulseIn(e_p,HIGH);
dist_cm = dur*ss/2;
if(sensor == HIGH && dist_cm < 200){
Serial.println("Movimiento detectado");
digitalWrite(led,HIGH);
Serial.println("Movimiento enviado a ThingSpeak");
for (int posicion = 0; posicion < notas_star; posicion++) {
toca (melodia_star[posicion], duracion_star[posicion]);
delay(30);
}
}
delay (2000);
}
// FUNCION PARA SIMPLIFICAR LA REPRODUCCION DE UNA NOTA
void toca(int nota,int duracion){
tone(pin_musica , nota, duracion);
delay(duracion + 40);
noTone(pin_musica);
}