Erinevus lehekülje "LPT RGB LED BALL" redaktsioonide vahel

Allikas: Kuutõrvaja
(Sissejuhatus)
(Programm ja katsetamine)
25. rida: 25. rida:
 
= Programm ja katsetamine =
 
= Programm ja katsetamine =
  
Järgmine koodijupp on kirjutatud c++ keeles. Koodi ülesandeks on lülitada
+
Järgmine koodijupp on kirjutatud c++ keeles.
 
 
  
 
<source lang="c">
 
<source lang="c">
37. rida: 36. rida:
 
void runFan(int powerLevel)
 
void runFan(int powerLevel)
 
{
 
{
   ioperm(base,1,1);
+
   ioperm(base,1,1); // määrame õigused LPT kasutamiseks
  
   // kordame, kuni tsükkel katkestatakse
+
   // kordame, kuni tsükkel katkestatakse ( ctrl + c )
 
   while(1)
 
   while(1)
 
   {
 
   {
     outb(0,base);                // lülitame kõik välja
+
     outb(0,base);                // lülitame LPT andmekanalid välja
     usleep(10000-powerLevel*100); // ootame
+
     usleep(10000-powerLevel*100); // ootame :: 10000 - % arv * 100
     outb(255,base);              // lülitame kõik sisse
+
     outb(255,base);              // lülitame LPT andmekanalid sisse
     usleep(powerLevel*100);      // ootame
+
     usleep(powerLevel*100);      // ootame :: % arv * 100
 
   }
 
   }
 
}
 
}
51. rida: 50. rida:
 
int main()
 
int main()
 
{
 
{
   int powerLevel = 0;
+
   int powerLevel = 0;             // tekitame muutuja
   cout << "Power level %: ";
+
   cout << "Power level %: ";     // kuvame kasutajale stringi
   cin >> powerLevel;
+
   cin >> powerLevel;             // küsime kasutajalt väärtust
   runFan(powerLevel);
+
   runFan(powerLevel);             // käivitame kordustsükli, vastavalt sisestatud väärtusele
 
}
 
}
 
</source>
 
</source>
71. rida: 70. rida:
 
     6    110
 
     6    110
 
     7    111
 
     7    111
 
[[Pilt:LPT_ports.gif]]
 
  
 
Kümnendarv 1 lülitaks sisse pesa D0, arv 5 aga D0 ja D2.
 
Kümnendarv 1 lülitaks sisse pesa D0, arv 5 aga D0 ja D2.

Redaktsioon: 13. oktoober 2011, kell 09:37

Sissejuhatus

Ülesanne on luua RGB valgusdioodidega kera, mis kahel (või kolmel) teljel pööreldes ägedaid mustreid looks. Originaalne idee koos täiendava infoga on Viidete all.

Skeem

Originaalse kera juhtimiseks oli modifitseeritud jalgratta tuli, mille sagedus oli muudetav. Minul tekkis aga idee, kasutada LPT porti mootorite ja LED'ide juhtimiseks.

LED'ide juhtimise skeem on jägmine:

LPTTransistorLED.png

NPN Transistor juhib voolu vaid siis, kui base on pinge all. LPT pordil jääb puudu ampritest, mistõttu suuremaid voolutarbijaid sinna ühendada ei tohi (oht LPT sootuks maha põletada). Küll aga saab soetada vastavaid transistoreid, mis mistahes voolu edasi annavad.

PSU (Power Supply Unit) seadmena kasutan tavalist arvuti AT (vanemat tüüpi) toiteplokki.

Takisti piirab voolu tugevust. Suuremate voolude korral (näiteks 5V või 12V) tuleks kindlasti takisti vahele panna.

LPT

LPT ports.gif

LPT pordil on 8 andme- (D) ja 8 maanduse (G) pesa.

Programm ja katsetamine

Järgmine koodijupp on kirjutatud c++ keeles.

#include <iostream>
#include <sys/io.h>

#define base 0x378
using namespace std;

void runFan(int powerLevel)
{
  ioperm(base,1,1); // määrame õigused LPT kasutamiseks

  // kordame, kuni tsükkel katkestatakse ( ctrl + c )
  while(1)
  {
    outb(0,base);                 // lülitame LPT andmekanalid välja
    usleep(10000-powerLevel*100); // ootame :: 10000 - % arv * 100
    outb(255,base);               // lülitame LPT andmekanalid sisse
    usleep(powerLevel*100);       // ootame :: % arv * 100
  }
}

int main()
{
  int powerLevel = 0;             // tekitame muutuja
  cout << "Power level %: ";      // kuvame kasutajale stringi
  cin >> powerLevel;              // küsime kasutajalt väärtust
  runFan(powerLevel);             // käivitame kordustsükli, vastavalt sisestatud väärtusele
}

LPT pordile saadetakse signaale kümnendsüsteemi arvuna, kuigi arvestus käib binaarsüsteemis.

Näiteks:

 dec    bin
   0      0
   1      1
   2     10
   3     11
   4    100
   5    101
   6    110
   7    111

Kümnendarv 1 lülitaks sisse pesa D0, arv 5 aga D0 ja D2.

Parem ülevaade teisendustest asub siin.

Youtube

http://www.youtube.com/embed/sO2-tqoyGik

http://www.youtube.com/embed/SEvToQ9jMXs

Viited

http://hackedgadgets.com/2010/04/20/spinning-rgb-led-ball/ <- originaalse kera pilidid ja kirjeldused #1

http://laserpointerforums.com/f57/led-orb-2-0-a-50012.html <- originaalse kera pilidid ja kirjeldused #2

http://www.codeproject.com/KB/cs/csppleds.aspx <- seletus LPT pordist ning selle toimimisest

http://www.instructables.com/id/A-Simple-Introduction-to-Transistors-and-PWM-Puls/ <- transistorid ja PWM (Pulse-Width Modulation)