Microcontroller 101
ḿ̬̏ͤͅỉ͔͖̜͌c͕͗ͤ̕̕r̴̨̦͕̝o̯̱̊͊͢c͕͗ͤ̕̕o̯̱̊͊͢ṇ̤͛̒̍t̲̂̓ͩ̑r̴̨̦͕̝o̯̱̊͊͢l̙͖̑̾ͣl̙͖̑̾ͣẹ̿͋̒̕r̴̨̦͕̝ 1̨̹̦͍̀0̗̜͕̅̃1̨̹̦͍̀
09-04-2024 e̅l̅e̅c̅t̅r̅o̅n̅i̅c̅ ̅e̅n̅v̅i̅r̅o̅n̅m̅e̅n̅t̅s̅
https://pzwiki.wdka.nl/mw-mediadesign/images/7/7e/Cricket.mp4
sensors and actuators
introduction to Arduino
LOLIN 32 Installation party :~)
step 1: download Arduino software
step 2: download driver for microcontroller
step 3: install driver
_windows: open Device Manager >> find UART device >> right click and update driver >> select driver
Hello World!
in Arduino program, select the correct board (WEMOS LOLIN32) and select the USB port you are using (if you are unsure, check the listed ports, unplug and see what changed)
void setup() { } void loop() { Serial.println("Hello World!"); //sends a message to the computer }
Simple Led blink example
int ledPin = 13; //the int ledPin is 13 void setup() { pinMode(ledPin,OUTPUT); //ledPin is a OUTPUT } void loop() { digitalWrite(ledPin,HIGH); //turns pin 13 on delay(500); //stops the loop for 500 milliseconds digitalWrite(ledPin,LOW); //turns pin 13 off delay(500); //stops the loop for 500 milliseconds }
Traffic light example
int RedLedPin = 13; //the int RedLedPin is 13 int GreenLedPin = 12; //the int GreenLedPin is 12 void setup() { pinMode(RedLedPin,OUTPUT); //ledPin is a OUTPUT pinMode(GreenLedPin,OUTPUT); //ledPin is a OUTPUT } void loop() { digitalWrite(GreenLedPin,HIGH); //turns green led on delay(5000); //stops the loop for 5000 milliseconds for(int i = 0; i < 5; i++){ //this for loop gets 5 times repeated digitalWrite(GreenLedPin,LOW); //turns green led off delay(500); //stops the loop for 500 milliseconds digitalWrite(GreenLedPin,HIGH); //turns green led off delay(500); //stops the loop for 500 milliseconds } digitalWrite(GreenLedPin,LOW); //turns green led off digitalWrite(RedLedPin,HIGH); //turns red led on delay(5000); //stops the loop for 5000 milliseconds digitalWrite(RedLedPin,LOW); //turns red led on }
link your arduino sketches below
16-04-24 ⱤØ฿Ø₮Ⱬ
#include <CapacitiveSensor.h> CapacitiveSensor sensor = CapacitiveSensor(8,11); long raw; void setup(){ sensor.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(115200); Serial.println("raw"); } void loop(){ raw = sensor.capacitiveSensor(10); Serial.println(raw); delay(10); }
Theremin
#include <CapacitiveSensor.h> CapacitiveSensor sensor = CapacitiveSensor(8,11); int speaker = 13; //connect a speaker between pin 13 and GND long raw; void setup(){ sensor.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(115200); Serial.println("raw"); } void loop(){ raw = sensor.capacitiveSensor(10); //lowest 450 & highest 750 raw = min(raw, 750); //max value of raw is 750 raw = max(raw, 10); //min value of raw is 10 long speakerValue = map(raw,450,750,100,4000); //scales to value from 450 and 750 to 100 and 4000 tone(speaker,speakerValue); //plays the frequency (raw) on port 13(speaker) Serial.print(raw); Serial.print(" "); Serial.println(speakerValue); }
Capactive sensor as button
#include <CapacitiveSensor.h> CapacitiveSensor sensor = CapacitiveSensor(8,11); int speaker = 13; long raw; void setup(){ sensor.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(115200); Serial.println("raw"); } void loop(){ raw = sensor.capacitiveSensor(10); //lowest 450 & highest 750 if(raw > 600){ //if raw is bigger than 600 Serial.println("touched"); //print "touched" tone(speaker,440); //play a tone with 440 hz delay(1000); //stop 1000 second noTone(speaker); //stop playing the tone } delay(10); }
Servo motor movement between 0 and 90 degrees
//this example controls a standard servo motor and moves it between 0 and 90 degrees //the servo has three different wires //the red wire is plus and connected to 5v //the brown wire is minus and connected to GND //the orange wire is the signal wire and connected to pin 3 (remember the ~-symbol - it means PWM) #include <Servo.h> Servo theServo; void setup() { Serial.begin(115200); theServo.attach(3); } void loop() { for(int i = 0; i < 90; i++){ theServo.write(i); Serial.println(i); delay(50); } for(int i = 90; i > 0; i--){ theServo.write(i); Serial.println(i); delay(10); } }
automatic trash can - servo motor connected capactive sensor
#include <Servo.h> #include <CapacitiveSensor.h> CapacitiveSensor sensor = CapacitiveSensor(8,11); Servo theServo; long raw; void setup() { Serial.begin(115200); theServo.attach(3); sensor.set_CS_AutocaL_Millis(0xFFFFFFFF); Serial.begin(115200); Serial.println("raw"); } void loop() { raw = sensor.capacitiveSensor(10); //lowest 450 & highest 750 if(raw > 600){ //if raw is bigger than 600 open(); //do void open delay(4000); //wait for 4 seconds close(); //close void opne } } void open(){ //open for(int i = 0; i < 90; i++){ //count from 0 to 90 theServo.write(i); //move the servo from 0 to 90 Serial.println(i); delay(50); } } void close(){ //close for(int i = 90; i > 0; i--){ theServo.write(i); Serial.println(i); delay(10); } }
trash can controlled by serial commands
//in this sketch the servo is controlled by serial commands from the computer //if you send the letter "o" to the arudino it will execute "void open()" //if you send the letter "c" to the arduino it will execute "void close()" #include <Servo.h> //import the servo library Servo theServo; //create a servo void setup() { Serial.begin(115200); //serial connection theServo.attach(3); //theServo is at port 3 (remeber the ~(PWM)-Symbol } void loop() { if(Serial.available()){ //if there is a serial command comming char command = Serial.read(); //read the serial command if(command == 'o'){ //is the command and 'o' open(); //do void open } if(command == 'c'){ close(); } } } void open(){ //open for(int i = 0; i < 90; i++){ //count from 0 to 90 with int i theServo.write(i); //i is the servo position Serial.println(i); //print the servo position to the serial monitor delay(50); //wait for 50 milliseconds } } void close(){ //close for(int i = 90; i > 0; i--){ theServo.write(i); Serial.println(i); delay(10); } }
Potentiometer opening the trash can
//in this sketch the servo is controlled by an potentiometer //a potentiometer is a variable resistor that can be changed by rotation #include <Servo.h> //import the servo library Servo theServo; //create a servo void setup() { Serial.begin(115200); //serial connection theServo.attach(3); //theServo is at port 3 (remeber the ~(PWM)-Symbol } void loop() { int value = analogRead(A0); //read the analog pin A0 the value is between 0 and 1023 value = map(value,0,1023,0,180); //adjust value from 0 to 1023 to 0 and 180 because the servo works with degrees theServo.write(value); }
painting machine
//in this sketch one poti controls one servo #include <Servo.h> Servo jointOne; void setup() { Serial.begin(115200); Serial.println("start"); jointOne.attach(10); } void loop() { int value = analogRead(A0); value = map(value, 0, 1023, 0, 180); jointOne.write(value); delay(10); }
Motor control
//connect the dc-motor to the motorshield motor port 1 //connect a external power source #include <Adafruit_MotorShield.h> Adafruit_MotorShield AFMS = Adafruit_MotorShield(); Adafruit_DCMotor *myMotor = AFMS.getMotor(1); void setup() { Serial.begin(115200); AFMS.begin(); myMotor->setSpeed(200); myMotor->run(RELEASE); } void loop() { myMotor->run(FORWARD); //forward myMotor->setSpeed(255); //max speed delay(2000); myMotor->run(RELEASE); //break delay(2000); myMotor->run(BACKWARD); //backward myMotor->setSpeed(255); //max speed delay(2000); myMotor->run(RELEASE); //break delay(2000); }