#include <Arduino_FreeRTOS.h>
#include <Ultrasonic.h>
#include <Servo.h>
Servo myservo;
int sensorValue;
unsigned long baca;
long duration, distance;
const int buzzerPin = 2;
int thresholdValue = 500;
Ultrasonic ultrasonic (11,12);
void setup() {
Serial.begin(9600);
while(!Serial){;}
myservo.attach(6);
xTaskCreate(TaskAnalogRead,"AnalogRead",128,NULL,1,NULL);
xTaskCreate( TaskBlink, "Blink", 128, NULL , 2 , NULL);
xTaskCreate( Taskultra, "ultrasonik", 128, NULL , 2 , NULL);
xTaskCreate( Taskservo, "SERVO", 128, NULL , 2 , NULL);
xTaskCreate( Taskbuzzer, "BUZZER", 128, NULL , 2 , NULL);
}
void loop() { }
void TaskAnalogRead (void *pvParameters){
(void) pvParameters;
pinMode(A0, OUTPUT);
for(;;)
{
sensorValue = analogRead(A0);
Serial.print("potensio Value = ");
Serial.println(sensorValue);
vTaskDelay(500);
}
}
void TaskBlink(void *pvParameters){
(void) pvParameters;
pinMode(8, OUTPUT);
for(;;)
{
analogWrite(8, sensorValue);
vTaskDelay(1);
}
}
void Taskultra(void *pvParameters){
(void) pvParameters;
for(;;)
{
baca = ultrasonic.read();
Serial.print("Nilai ultrasonik = ");
Serial.print(baca);
Serial.println(" CM");
vTaskDelay(500);
}
}
void Taskservo(void *pvParameters){
(void) pvParameters;
for(;;)
{
if(baca > 10){
myservo.write(90);
Serial.println("Sudut Servo: 90 derajat ");
}
else if(baca < 10){
myservo.write(180);
Serial.println("Sudut Servo: 180 derajat");
}
vTaskDelay(500);
}
}
void Taskbuzzer(void *pvParameters){
(void) pvParameters;
pinMode(buzzerPin, OUTPUT);
for(;;)
{
if (sensorValue >= thresholdValue)
{digitalWrite(2, HIGH);
Serial.println("Buzzer: Menyala");}
else {
digitalWrite(2, LOW);
Serial.println("Buzzer: Mati");
}
vTaskDelay(500);
}
}