Fórum témák
- • Ni-mh akkumulátor házilag
- • Rádió építés a kezdetektől a világvevőig
- • TV hiba, mi a megoldás?
- • Vicces - mókás történetek
- • LED-es világítás
- • Alternativ HE találkozó(k)
- • A KiCad paneltervező
- • HESTORE.hu
- • Whirlpool mosógép
- • Elfogadnám, ha ingyen elvihető
- • Tranzisztor, mint kapcsoló
- • LCD kijelző vezérlése, életre keltése
- • Kapcsolóüzemű tápegység
- • Audiofil, High End Audio
- • Mosogatógép hiba
- • Oszcilloszkóp készítése házilag képcsőből, TV-szkóp
- • Vag-com-hex interfész (kábel hibák)
- • Autós erősítős kérdések, problémák
- • Bojler javítása, kérdések
- • Fejhallgató erősítő
- • Erősítő mindig és mindig
- • Differenciál opamp osztott feszültséggel
- • Transzformátor készítés, méretezés
- • Házilag akku galvánelem
- • Szünetmentes táp javítása, élesztése
- • Klíma szervizelés, javítás
- • Villanypásztor
- • Számítógép hiba, de mi a probléma?
- • Műveleti erősítő
- • Felajánlás, azaz ingyen elvihető
- • Lúgos akkumulátor
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Inverter készítése
- • Napelem alkalmazása a lakás energia ellátásában
- • Leválasztótrafó (házilag)
- • Oszcilloszkóp vétel, mit gondoltok?
- • Kapcsolási rajzot keresek
- • Kazettás magnó (deck) javítása
- • Li-Po - Li-ion akkumulátor és töltője
- • Hűtőgép probléma
- • Gitár Pickup
- • Forrasztópákák - melyik miért jó
- • Rádióamatőrök topikja
- • Mosógép vezérlők és általános problémáik
- • Freecad-Miértek hogyanok
- • Opel Astra elektromos hibák
- • Autóelektronika
- • Frekvenciaváltó
- • IMI villanymotor
- • Codefon kaputelefon
- • Dobozolási technikák, műszerdobozok
- • Rossz HDD javítás, mentés
- • 3D nyomtatás
- • Hörmann kapuk
- • Kávéfőzőgép hiba
» 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!
|
|