Fórum témák
- • Internetes biztonság, adatvédelem, hackertámadás
- • 135.6 kHz-es HGA22 vevő
- • Kapcsolási rajzot keresek
- • Villanyszerelés
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Számítógép hiba, de mi a probléma?
- • Tápegységgel kapcsolatos kérdések
- • Gigatron TTL számítógép
- • Oszcilloszkóp vétel, mit gondoltok?
- • VF3 - 6 végerősítő
- • Alternativ HE találkozó(k)
- • Crystal radio - detektoros rádió
- • Vásárlás, hol kapható?
- • LCD TV probléma
- • Házilag építhető fémkereső
- • Elfogadnám, ha ingyen elvihető
- • JVC autórádió
- • TV-játék
- • Kapcsolóüzemű tápegység
- • SMD forrasztás profin
- • Arduino
- • Muzeális készülékek-alkatrészek restaurálása
- • Rádió javítás
- • 1.2V NiMH akkumulátor kisütő
- • Felajánlás, azaz ingyen elvihető
- • Rádiótechnika számok keresése
- • Jókívánság
- • SDR (Software Defined Radio)
- • Elektromos kerékpár, robogó házilag
- • NYÁK terv ellenőrzése
- • Lemezjátszó beállítása, javítása
- • Erősítő mindig és mindig
- • Geiger-Müller számláló (hobbi)
- • Parkside akkuk javìtása
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • TV hiba, mi a megoldás?
- • Robotfűnyíró vagy fűnyíró robot
- • Mosógép vezérlők és általános problémáik
- • Mosogatógép hiba
- • Lemezlejátszó tű
- • Whirlpool mosógép
- • Műhelyünk felszerelése, szerszámai
- • Autórádió beszerelése
- • PC táp javítása
- • Gázkazán vezérlő hibák
- • PLC kérdések
- • Villanypásztor
- • Mobiltelefon hiba
- • Espressif mikrokontrollerek
- • Philips TV
- • Minden, ami modell
- • Elektroncső
- • Frekvenciamérő
- • Magas nyomású tisztító működése, javítása
- • Rádióamatőrök topikja
» Több friss téma
|
Cikkek » HMC6352 iránytűmodul - I2C (TWI) használata AVR-rel
HMC6352 iránytűmodul - I2C (TWI) használata AVR-rel
Irányadatok grafikus megjelenítése Processing-gel I.
Az alábbi Processing programmal, az AVR által a soros porton keresztül küldött adatokat feldolgozva, a képernyőn megjeleníthetünk egy az iránytűmodul irányszögét mutató nyilat

(a videóhoz kattints a képre)
import processing.serial.*; // soros portokat kezelo konyvtar importalasa
int graphPosition = 0; // nyil kezdeti poziciojanak megadasa
// valtozok definialasa
int [ ] vals = new int[1];
float position;
Serial myPort;
boolean madeContact = false;
void setup()
{
background(255); // hatterszin (feher) beallitasa
size(300, 300); // ablak merete
position = width/2; // calculate position:
// a Processing a 2. betukeszletenek importalasa:
PFont myFont = createFont(PFont.list()[2], 14);
textFont(myFont);
// az USB-TTL atalakito COM1 port sorszama: [0]
myPort = new Serial(this, Serial.list()[0], 9600);
// a soros porton beerkezo adatokat "ujsor" karakterig puffereljuk
myPort.bufferUntil('\r');
// grafikus kirajzolas beallitasa:
noStroke();
smooth();
}
void draw()
{
background(204);
text("N",145,110);
text("|",150,120);
text("S",146,200);
text("|",150,187);
text("E",192,155);
text("_",180,149);
text("W",95,155);
text("_",113,149);
// ha az AVR-tol nem erkezik valasz, akkor addig kuldjuk ujra az `m`-et, amig valasz nem erkezik
if (madeContact == false)
{
myPort.write('m');
}
// az iranytumodul altal mert iranyszog atkonvertalasa fokrol radianra
float a = 2*PI*vals[0]/3600;
// nyil kirajzolasa a mert iranyszoggel:
drawArrow(a);
}
void drawArrow(float a) // nyilrajzolo rutin
{
translate(width/2, height/2);
// vilagoskek kor kirajzolasa
fill(80,200,230);
ellipse(0,0,50,50);
// nyil szinenek (fekete) megadasa:
fill(0);
// iranyszoggel torteno forgatas
rotate(a);
// egy negyzetbol es egy haromszogbol allo nyil megrajzolasa:
triangle(-15, 0, 0, -20, 15, 0);
rect(-5,0, 10,20);
}
void serialEvent(Serial myPort)
{
// ha van a soros porton keresztul bejovo adat, akkor a kapcsolat letrejott:
madeContact = true;
// a bejovo adatokat beolvassuk egy pufferbe, amig egy ujsor karakter nem erkezik:
String myString = myPort.readStringUntil('\n');
// ha a bejovo karakterek az ujsor karaktertol kulonbozoek, akkor a bejovo karaktereket a vesszoknel szetvalasztjuk es ujra szamma alakitjuk
if (myString != null)
{
myString = trim(myString);
int sensors[] = int(split(myString, ','));
if (sensors.length >= 1)
{
vals[0] = sensors[0];
delay(100);
// a mert iranyszogertek kiirasa a kepernyore:
println(sensors[0]);
// `m` karakter kuldese az AVR-nek, hogy vegezzen el egy uj merest
myPort.write('m');
}
}
}
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!
|
|