logo-text-web-ic2.png

Je to snadnější, než myslíte...

Prezentace mé práce
Automatizované systémy a IT

O jaké projekty se jedná?

Jedná se o projekty zpracované za pomocí zařízení Arduino. Co je to arduino? Arduino je jednodeskový počítač založen na mikrokontrolerech ATmega. Jak funguje sestavení takového projektu? Nejdříve si vytvoříme obvod za pomocí Arduina a potřebných součástek. Poté se přemístíme do programu Arduino IDE ve kterém vytvoříme program k ovládání desky. Program vytváříme za pomocí jazyku C#

Dokumentace projektů

Zdroj

Součástky

Odeslaný screenshot obrázek

Schéma

Screenshot 2020 12 17 210618 y1tq2rj67b

 

Kód pro Arduino IDE

#include <Servo.h>
const int trigPin=12;
const int echoPin=11;
long duration;
int distance;
Servo s1;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  s1.attach(9);
}

void loop(){
    for(int i=0;i<180;i=i+1){            
        s1.write(i);
        delay(30);
        distance = calDist();
        Serial.print(i);                      
        Serial.print(",");                   
        Serial.print(distance);              
        Serial.print(".");                   
     }
    for(int i=180;i>0;i=i-1){  
        s1.write(i);
        delay(30);
        distance = calDist();
        Serial.print(i);
        Serial.print(",");
        Serial.print(distance);
        Serial.print(".");
    }
}

    int calDist(){
       digitalWrite(trigPin, LOW);
       delayMicroseconds(2);
       digitalWrite(trigPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(trigPin, LOW);                                                     
       duration = pulseIn(echoPin, HIGH);                            
       distance= duration*0.034/2;                  
       return distance;
}

 Kód pro processing

 

import processing.serial.*;               
Serial myPort;                         

String ang="";
String distance="";
String data="";

int angle, dist;

void setup() {
   size (2000,800);   
   myPort = new Serial(this,"COM3", 9600);                     
   myPort.bufferUntil('.');  
   background(0);
}

void draw() {
      fill(0,5);              
      noStroke();
      rect(0, 0, width, height*0.93); 
      noStroke();
      fill(0,255);
      rect(0,height*0.93,width,height);                   
      drawRadar(); 
      drawLine();
      drawObject();
      drawText();
}


void serialEvent (Serial myPort) {                                                     
      data = myPort.readStringUntil('.');
      data = data.substring(0,data.length()-1);
      int index1 = data.indexOf(",");                                                    
      ang= data.substring(0, index1);                                                 
      distance= data.substring(index1+1, data.length());                            
      angle = int(ang);
      dist = int(distance);
      System.out.println(angle);
}

void drawRadar(){
    pushMatrix();
    noFill();
    strokeWeight(0.5);
    stroke(10,255,10);            
    translate(width/2,height-height*0.06);    
    line(-width/2,0,width/2,0);    
    arc(0,0,(width*0.5),(width*0.5),PI,TWO_PI);
    arc(0,0,(width*0.25),(width*0.25),PI,TWO_PI);
    arc(0,0,(width*0.75),(width*0.75),PI,TWO_PI);
    arc(0,0,(width*0.95),(width*0.95),PI,TWO_PI);
    line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
    line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
    line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
    line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
    line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
    stroke(175,255,175); 
    line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15)));
    line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45)));
    line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75)));
    line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105)));
    line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135)));
    line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165)));
    popMatrix();
}

void drawLine() {
  pushMatrix();
  strokeWeight(9);
  stroke(0,255,0);
  translate(width/2,height-height*0.06); 
  line(0,0,(width/2)*cos(radians(angle)),(-width/2)*sin(radians(angle)));
  popMatrix();
}

void drawObject() {
    pushMatrix();    
    strokeWeight(9);
    stroke(255,0,0);
    translate(width/2,height-height*0.06);
    float pixleDist = (dist/40.0)*(width/2.0);                       
    float pd=(width/2)-pixleDist;
    float x=-pixleDist*cos(radians(angle));
    float y=-pixleDist*sin(radians(angle));
    if(dist<=40){                               
       line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle))));
    }
    popMatrix();
}

void drawText(){
    pushMatrix();
    fill(100,200,255);
    textSize(25);
    text("10cm",(width/2)+(width*0.115),height*0.93);
    text("20cm",(width/2)+(width*0.24),height*0.93);
    text("30cm",(width/2)+(width*0.365),height*0.93);
    text("40cm",(width/2)+(width*0.45),height*0.93);
    if(dist<=40) {
      text("Distance :"+dist,width*0.7,height*0.99);
    }
    translate(width/2,height-height*0.06);
    textSize(25);
    text(" 30",(width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
    text(" 60",(width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
    text("90",(width/2)*cos(radians(91)),(-width/2)*sin(radians(90)));
    text("120",(width/2)*cos(radians(123)),(-width/2)*sin(radians(118)));
    text("150",(width/2)*cos(radians(160)),(-width/2)*sin(radians(150)));
    popMatrix();  
}

 

comB.png

Potřebné součásti

Diagram

Hc sr04 m9qtzfpmuo 1esb0fuolf

Kód

/*
* HC-SR04 example sketch
*
* https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-036380
*
* by Isaac100
*/

const int trigPin = 9;
const int echoPin = 10;

float duration, distance;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
Serial.print(„Distance: „);
Serial.println(distance);
delay(100);
}


Více informaci zde

Arduino servo controlled by ultrasonic sensor
Servo kontrolované ultrazvukovým senzorem. Spolupracoval Jan Koloničný.

Video níže.