MultiModal – UV Got it Covered

Process: https://oss.adm.ntu.edu.sg/jtiong002/multimodal-update/

MG996R MG996 Metal Gear RC Servo High Speed & Torque RC CAR 1/8|servo high speed|cars carscar rc - AliExpress3M 4-50-3903-RED $28.19 Duct Tape, 4 In x 50 yd, 6.5 mil, Red, Vinyl | Zoro.com

/* Processing sketch to read time and input to weather API to retrieve UV index and send index category data to arduino
*/

import http.requests.*;
import processing.serial.*; //serial lib

Serial myPort; // Create object from Serial class

String day, month, year, hour, minute, second;

float lat;
float lon;
int val;


public void setup() 
{
size(400, 400);
frameRate(0.5);

myPort = new Serial(this, "COM3", 9600);
}


public void draw()
{
int d = day(); // Values from 1 - 31
int m = month(); // Values from 1 - 12
int y = year(); // 2003, 2004, 2005, etc.

String day = nf(d, 2);
String month = nf(m, 2);
String year = nf(y, 4);

int h = hour(); // Values from 0 - 23
String hour = nf(h, 2);

GetRequest get = new GetRequest("https://api.data.gov.sg/v1/environment/uv-index?date_time="+ year +"-"+ month + "-" + day + "T" + hour + ":00:00");
get.send();

//println("Reponse Content: " + get.getContent());
//println("Reponse Content-Length Header: " + get.getHeader("Content-Length"));

String result = get.getContent();
//int resultLength = int(get.getHeader("Content-Length"));
String value = result.substring(116, 118); // Returns value result
int[] valueSolo = int(split(value, ',')); //remove comma

val = valueSolo[0];
println(valueSolo[0], val);


while (val > 0 ) {
if (val == 1 || val == 2) { //1 and 2
myPort.write(1);
}

if (val >= 3 || val <= 5) { //3 to 5 inclusive
myPort.write(2);
}

if (val == 6 || val == 7) { // 6 and 7
myPort.write(3);
}

if (val >= 8 || val <= 10) { //8 to 10 inclusive
myPort.write(4);
}

if (val >= 11) {
myPort.write(5);
}
}

}

 

/* arduino listening to processing for UVI category 
and pulsing servo motor */

#include <Servo.h>

# define PIN 9
Servo myservo;

int val;
int angle = 0;
int level;

void setup() {
myservo.attach(PIN);
myservo.write(angle);

Serial.begin(9600);

}

void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
val = int(Serial.read());
Serial.println(val);

if (val == 1) { //LOW UVI
level = 18;
myservo.write(level);
delay(700);
myservo.write(0);
}

if (val == 2) { //MEDIUM UVI
level = 36;
myservo.write(level);
delay(1000);
myservo.write(0);
}

if (val == 3) { //HIGH UVI
level = 54;
myservo.write(level);
delay(1000);
myservo.write(0);

}

if (val == 4) { //VERY HIGH UVI
level = 72;
myservo.write(level);
delay(700);
myservo.write(0);

}

if (val == 5) { //EXREMELY HIGH UVI
level = 90;
myservo.write(level);
delay(500);
myservo.write(0);

}
else {
myservo.write(0);
}
}

}

Leave a Reply