Table des matières:

: 4 étapes
: 4 étapes

Vidéo: : 4 étapes

Vidéo: : 4 étapes
Vidéo: Les 4 étapes de notre vie illustrées 2024, Juillet
Anonim
??
??

改作:https://aboutsciences.com/blog/arduino-radar-using…

??

: arduino uno,,,: 掃描到物品時加速並傳述到電腦,物品接近10cm時喇叭會警告

Étape 1: Étape 1 電路圖

Étape 1 電路圖
Étape 1 電路圖

??

Étape 2: Étape 2 (arduino)

Étape 2 (arduino)
Étape 2 (arduino)

create.arduino.cc/editor/dwdawdad/ef6b26a2-3f40-410d-9fdd-3413816090fe/preview

Étape 3: Étape 3 (traitement)

import processing.serial.*;

importer java.awt.event. KeyEvent; importer java.io. IOException;

myPort série; PFont orcFont; int iAngle; int iDistance; void setup() { size(1000, 500); lisse(); myPort = new Serial(this, "COM7", 9600); monPort.clear(); myPort.bufferUntil('\n');

} void draw() { fill(98, 245, 31); noStroke(); remplir (0, 4); rect(0, 0, largeur, 0,935 * hauteur); remplir (98, 245, 31); DrawRadar(); Dessiner une ligne(); DrawObject(); DrawText(); } void serialEvent (Serial myPort) { try { String data = myPort.readStringUntil('\n'); if (données == null) { return; } int virguleIndex = data.indexOf(", "); Angle de chaîne = data.substring(0, virguleIndex); Distance de chaîne = data.substring(virguleIndex+1, data.length()-1); iAngle = ChaîneVersInt(angle); iDistance = ChaîneVersInt(distance); } catch(RuntimeException e) {} } void DrawRadar() { pushMatrix(); translate(largeur/2, 0,926 * hauteur); aucun remplissage(); poids du trait(2); accident vasculaire cérébral (98, 245, 31); // dessine les lignes d'arc DrawRadarArcLine(0.9375); DrawRadarArcLine(0.7300); DrawRadarArcLine(0.5210); DrawRadarArcLine(0.3130); // dessine les lignes d'angle final int halfWidth = width/2; line(-halfWidth, 0, halfWidth, 0); for(int angle = 30; angle <= 150; angle+=30) { DrawRadarAngledLine(angle); } line(-halfWidth * cos(radians(30)), 0, halfWidth, 0); popMatrice(); } void DrawRadarArcLine (coefficient flottant final) { arc (0, 0, coefficient * largeur, coefficient * largeur, PI, TWO_PI); } void DrawRadarAngledLine(final int angle){ line(0, 0, (-width/2) * cos(radians(angle)), (-width/2) * sin(radians(angle))); } void DrawObject() { pushMatrix(); translate(largeur/2, 0,926 * hauteur); poids de la course(9); course (255, 10, 10); int pixsDistance = int(iDistance * 0,020835 * hauteur); if(iDistance 40 ? "Hors plage": "Dans la plage"), 0,125 * largeur, 0,9723 * hauteur); text("Angle: " + iAngle + " °", 0,52 * largeur, 0,9723 * hauteur); text("Distance: ", 0,74 * largeur, 0,9723 * hauteur); if(iDistance < 40) { text(" " + iDistance +" cm", 0,775 * largeur, 0,9723 * hauteur); } tailletexte(25); remplir (98, 245, 60); translate(0,5006 * largeur + largeur/2 * cos(radians(30)), 0,9093 * hauteur - largeur/2 * sin(radians(30))); rotation(-radians(-60)); texte("30°", 0, 0); resetMatrix(); translate(0.497 * largeur + largeur/2 * cos(radians(60)), 0.9112 * hauteur - largeur/2 * sin(radians(60))); rotation(-radians(-30)); texte("60°", 0, 0); resetMatrix(); translate(0.493 * largeur + largeur/2 * cos(radians(90)), 0.9167 * hauteur - largeur/2 * sin(radians(90))); rotation(radians(0)); texte("90°", 0, 0); resetMatrix(); translate(0.487 * largeur + largeur/2 * cos(radians(120)), 0.92871 * hauteur - largeur/2 * sin(radians(120))); rotation(radians(-30)); texte("120°", 0, 0); resetMatrix(); translate(0.4896 * largeur + largeur/2 * cos(radians(150)), 0.9426 * hauteur - largeur/2 * sin(radians(150))); rotation(radians(-60)); texte("150°", 0, 0); popMatrice(); }

int StringVersInt(String string) { valeur int = 0; for(int i = 0; i = '0' && string.charAt(i) <= '9') { value *= 10; valeur += (string.charAt(i) - '0'); }} valeur de retour;}

Conseillé: