Vegen ultrasone afstandsmeter (4 / 4 stap)

Stap 4: Upload code


  1. De Uno verbinden met een PC via USB. Kopieer de code hieronder in een lege schets met behulp van de Arduino IDE en deze uploaden naar de Raad van bestuur.
  2. U moet importeren van de ST7735 en Adafruit GFX bibliotheken die hier gevonden worden: http://learn.adafruit.com/1-8-tft-display/graphics-library
  3. Verwijderen van de USB-kabel en de stekker van de 2.1mm hechten aan de Uno de macht jack.
  4. U hebt nu een werkende vegen ultrasone afstandsmeter. Spelen met enkele van de variabelen in de code te wijzigen van de snelheid van de servo en de manier waarop die de resultaten worden weergegeven op het display.

Deze code verwerkt gegevens uit een ultrasone afstandsmeter gemonteerd op een servo
De servo zullen vegen 180 graden
Gegevens van de ultrasone afstandsmeter is uitgezet op het display

Voor de breakout, kunt u om het even welk (4 of) 5 pinnen
#define sclk 4
#define mosi 5
#define cs 6
#define dc 7
#define rst 8 / / u kunt dit ook aansluiten op de Arduino reset

Gebruik deze pinnen voor het schild!
#define sclk 13
#define mosi 11
#define cs 10
#define dc 8
#define rst 0 / / u kunt dit ook aansluiten op de Arduino reset

#include < Adafruit_GFX.h > / / Core grafische bibliotheek
#include < Adafruit_ST7735.h > / / hardwarespecifieke bibliotheek
#include < math.h >
#include < SPI.h >
#include < Servo.h >

#if defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif

Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
zweven p = 3.1415926;
uint16_t x = 0;
uint16_t y = 0;
float-hoek = 0;
zweven angle2 = 0;
zweven angle1 = 0;
int vooruit = 1;
int sensor = 0;
dubbele afstand = 0;
uint16_t px = 0;
uint16_t py = 0;
dubbele schaal =. 4;
int i = 0;
dubbele snelheid = 0,02;
float offset = 10;
int count = 0;
int pos = 0;

Servo de servo;
int servopin = 9;

ongeldig setup(void) {}

Servo en ingesteld op midden koppelen
Servo.attach(servopin);
delay(500);
Servo.write(90);
delay(500);
Servo.Detach(); Loskoppelen voordat de weergeven opdrachten (SPI interface maakt gebruik van dezelfde timers zijn Servo bibliotheek)

tft.initR(INITR_BLACKTAB);   initialiseren van een tab ST7735S-chip, zwart
Als uw TFT plastic wikkel heeft een rood-Tab, met de volgende programmacode:
tft.initR(INITR_REDTAB);   een ST7735R chip, rode tabblad initialiseren
Als uw TFT plastic wikkel heeft een groene tabblad, gebruikt u de volgende opdracht:
tft.initR(INITR_GREENTAB); een ST7735R chip, groene tabblad initialiseren

Maken van een zwart scherm en vervolgens afdrukken van de achtergrond (de tekst en de bogen)
tft.fillScreen(ST7735_BLACK);
tft.setCursor (0, 152);
TFT.Print ("1m 2m 3m");
tft.setCursor (0, 0);
TFT.Print("scanning");
drawcircles();

angle1 = atan((float)tft.width()/((tft.height()/2.0)-offset));
angle2 = M_PI - angle1;
}

void loop {}

Berekenen van positie voor servo (servo is 0-180degrees, terwijl de variabele hoek in radialen)
POS = 180.0-180.0*(angle/p);
afstand = analogRead(sensor);

De servo koppelen aan het begin van elke lus
Servo.attach(servopin);
delay(15);
Servo.write(POS);

Deze code converteert polar cooridantes van sensor naar de x-en y-coördinaten
Hiermee bepaalt u welke pixels te trekken van de sensorgegevens over
De code verschilt enigszins afhankelijk van het kwadrant van de hoek
if(Angle<angle1) {}
x = (uint16_t) (tft.height()/2-offset) * tan(angle);
y = offset (uint16_t);
PX = schaal * afstand * sin(angle);
py = tft.height () / 2 - schalen * afstand * cos(angle);
} else if (hoek <(M_PI/2.0)) {}
y = (uint16_t) ((tft.height()) / 2 - tft.width() / tan(angle));
x = tft.width();
PX = schaal * afstand * sin(angle);
py = tft.height () / 2 - schalen * afstand * cos(angle);
} else if(angle<angle2) {}
y = (uint16_t) ((tft.height()) / 2 + tft.width() / tan(M_PI-angle));
x = tft.width();
PX = schaal * afstand * sin(M_PI-angle);
py = tft.height () / 2 + schaal * afstand * cos(M_PI-angle);
} else if(angle>angle2) {}
x = (uint16_t) (tft.height()/2-offset) * tan(M_PI-angle);
y = (uint16_t) (tft.height()-offset);
PX = schaal * afstand * sin(M_PI-angle);
py = tft.height () / 2 + schaal * afstand * cos(M_PI-angle);
}

Loskoppelen van de servo nadat het zijn positie is geworden voor de cyclus en voor het schrijven van de weergeven opdrachten
delay(15);
Servo.Detach();

Teken een lijn die de richting die de sensor wijst vertegenwoordigt
tft.drawLine (0, tft.height () / 2, x, y, ST7735_GREEN);
tft.drawLine (0, tft.height () / 2, x, y, ST7735_BLACK);
Teken een cirkel voor de sensor
tft.fillCircle (px, py, 1, ST7735_RED);

Als tekenobjecten computationeel intensief is, worden de groene bogen alleen aangetrokken door elke 30 cycli
Als (graaf > = 30) {}
Graaf = 0;
drawcircles();
TFT.Print(".");
}
Graaf ++;

Deze code verandert de richting die de servo draait wanneer het einde van elke sweep (0 of 180 graden) is bereikt
De code bevat de tekst en de bogen opnieuw tekenen als de weergave is uitgeschakeld aan het einde van elke sweep
if(forward==0) {}
hoek = hoek-snelheid;
Als (hoek < = 0) {}
hoek = 0;
voorwaarts = 1;
tft.fillScreen(ST7735_BLACK);
tft.setCursor (0, 152);
TFT.Print ("1m 2m 3m");
tft.setCursor (0, 0);
TFT.Print("scanning");
Graaf = 0;
drawcircles();
}
} else {}
hoek = hoek + snelheid;
Als (hoek > = M_PI) {}
hoek = M_PI;
voorwaarts = 0;
tft.fillScreen(ST7735_BLACK);
tft.setCursor (0, 152);
TFT.Print ("1m 2m 3m");
tft.setCursor (0, 0);
TFT.Print("scanning");
Graaf = 0;
drawcircles();

}
}

}

Een functie voor het tekenen van cirkels
ongeldig drawcircles() {}
tft.drawCircle (0, tft.height () / 2, tft.height () / 4-20, ST7735_GREEN);
tft.drawCircle (0, tft.height () / 2, tft.height () / 2-20, ST7735_GREEN);
tft.drawCircle (0, tft.height () / 2, (tft.width)-20, ST7735_GREEN);
}

Gerelateerde Artikelen

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Ultrasone gebaar gebaseerde TV afstandsbediening

Ultrasone gebaar gebaseerde TV afstandsbediening

dit is een vrij eenvoudig project dat is ontworpen om belangrijke onderdelen kennismaken met een nieuwe gebruiker van de Arduino. Ik heb dit in een paar uur knutselen met behulp van bestaande Arduino libraries en een SainSmart starterkit. Echte werel
Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Hallo Instructables,Ik heb wat moeite met mijn goedkoop ultrasone sensor (hc-sr04) en vandaag vond ik een echt eenvoudige oplossing.Het is een echt eenvoudig bewerken van de code van de normale 3pin.Ik voegde de 4 int naar het begin van de code, zoda
Ultrasone afstand meting NRF905 draadloze transmissiesysteem op basis van Arduino

Ultrasone afstand meting NRF905 draadloze transmissiesysteem op basis van Arduino

ICStation Team introduceren u deze ultrasone afstandsmeting NRF905 draadloze transmissiesysteem met ICStation UNO en Mega 2560 compatibel met Arduino. De spanning van de werken is DC5V. Het maakt gebruik van ultrasone voor het meten van afstand en re
Afstand meten en obstakel detectie met behulp van NXP 89v51rd2fn en ultrasone sensor HC-SR04.

Afstand meten en obstakel detectie met behulp van NXP 89v51rd2fn en ultrasone sensor HC-SR04.

Iedereen maakt gebruik van arduino uno of mega om projecten te maken zoals ze makkelijk te gebruiken zijn en de code voor de arduino gemakkelijk beschikbaar zijn op de arduino forums is en niemand atmel, philips of andere microcontroller gebruik te m
Ultrasone afstand Sensor Visualizer W / Processing

Ultrasone afstand Sensor Visualizer W / Processing

Dit project maakt gebruik van verwerken om gegevens uit een ultrasone afstandsmeter op een arduino board en ingang naar variabelen in een schets.Stap 1: Uw hardware instellenu moet:Ultrasone afstandsmeterArduino boarddradendraad verbinden met uw meet
Arduino experimenten (Superformaat Instructable)

Arduino experimenten (Superformaat Instructable)

Massa's, zo niet alle Arduino experimenten gedaan op mijn manier, die wordt iedereen carry van uit naar de volgende persoon verschillende experimenten hebben als zodanig dit instructable zal een heleboel video's, en foto's evenals gedetailleerde besc
Ubuntu en de arduino.

Ubuntu en de arduino.

The Arduino is een grote kleine micro-controller. Ir is oorspronkelijk ontwikkeld in Italië, werd soort van een open source project. Kunt u enkel de micro-controller zelf zijn kunt u een geprefabriceerde setup met de benodigde interfaces en eenvoudig
Multifunctionele mobiele Manipulator Mk 1

Multifunctionele mobiele Manipulator Mk 1

Korte beschrijving:Bouw uw eigen DIY gigantische robot die de piano bespeelt trekt van foto's, maaltijden bereidt, wateren van planten, zich bezighoudt met lightsaber duels en meer. De multifunctionele mobiele Manipulator is een geavanceerde open-sou
Tentakel Launchpad

Tentakel Launchpad

In dit Instructable, zullen wij hoe te gaan over het maken van uw zeer eigen tentakel Launchpad detaillering worden! Dit project werd ontworpen als een uitbreiding van mijn Animatronic tentakel Project, als het leek een logische tweede stap zodra u h
2 wiel RC Racer

2 wiel RC Racer

In dit instructable ik zal u tonen hoe te bouwen van een 2 wiel LEGO RC Racer.Het idee voor deze robot komt van een google-advertentie van de makeblock robot. Het idee was om te bouwen van dergelijke een robot, met de mogelijkheid om hem te bedienen
Verschijning toestellen (Halloween Prank)

Verschijning toestellen (Halloween Prank)

Dus besloten heb ik om een thema Halloween-grap waar een potlood kopje op mysterieuze wijze beweegt door zelf of zelfs vliegt op een tafel naast een nietsvermoedende mede-werker. Muwuahahahahaha!Stap 1: BenodigdhedenVolledige lijst van onderdelen: PN
Gebaar gecontroleerde gaming

Gebaar gecontroleerde gaming

Hallo vrienden, In dit instructable ik zal u tonen hoe een gebaar gecontroleerde gaming met een Arduino UNO zonder het krijgen in veel dingen (zoals krijgen Arduino in dfuwijze van de programmeur of aangepaste drivers of dingen als dat) te maken.Ik h
DIY nephand

DIY nephand

Voor dit Instructable, zullen we een robotic hand met allerlei coole applicaties bouwen! Het ontwerp van deze hand is gericht op de kosteneffectiviteit en toegankelijke materialen.Demo-video's hieronder:Stap 1: premisseDit Instructable detailleert ho