• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

LED диоди преку USB или паралелен порт

  • Ја почнал/а темата
  • #1

petar.bt

Intern
12 август 2007
731
20
Tуториали за програмирање на LED диоди преку USB или паралелен порт во Visual Baisc. Некој основни примери.
 

MetalGear

On your way to fame
14 април 2007
2,997
507
www.ibiz.mk
ДА не си малку збунет
програмирање на лед диоди :D

да не е програмирање на микроконтролери :rolleyes::rolleyes:
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
Ок, Прво треба да разбереш како работи паралелниот порт, за УСБ незнам, значи, лед диодите се приклучуваат од вториот пин до деветиот и пин 15 се зема како маса.

Значи можеме да конектираме 8 диоди. Како да ги активираме?

Лесно, 8 диоди значи имаме еден бајт, еден бајт е голем 8 бита. Диодите ќе ги активираме така што на оној пин ќе донесеме единица и ќе се уклуче пинот, волтажата е 3,38 волти и преку лед диодата се добива струја околу 0,10 А што е лошо, поради постоењето на чип кај паралелниот порт за контрола а низ чип максималната струја треба да е 0,010А, значи ќе треба да ставиш отпорник, јас кај мене со помош на Spion ставив отпорник од 180ohm и добив струја од 0,06А што е добро.

Паралелниот порт кан повеќето компјутери се наоѓа на адреса 0378. Имам пробано да направам програми за контрола на ЛЕД диодите прку паскал во виндовз но не работат поради тоа што при старт на windows на паралелниот порт се донесува 255 дата на паралелниот порт и се вклучуваат сите диоди, ова го пробав и на windows SP1 i SP2 и досега не сум нашол начин за исклучуваќе на портот при старт. Има опција да се исклучи од device manager но тогаш нема да работи портот и нема да можеш да праќаш податоци.

Јас моите ги направив да работат под линукс се разбира и супер работат. Имам неколку програми за нивна контрола во C еве ги(Сите се изработка на Spion):

За сите 8 диоди:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

#define base 0x0378           /* printer port base address */

int sendport(int i)
{                    
	if (!ioperm(base,1,1)) {
		outb((unsigned char)i, base);
		return 1;
	}
	else { return 0; }
}

int main()
{
	int k = 1;
	// int u = k;
	while (k <=255)
	{
		sendport(k);
		usleep(300000);
		k=k+1;
	}
	sendport(0);
}
Fade ефект:

Код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

#define base 0x0378           /* printer port base address */

int sendport(int i)
{                    
	if (!ioperm(base,1,1)) {
		outb((unsigned char)i, base);
		return 1;
	}
	else { return 0; }
}

int main()
{
	int k = 20000;
	int u = k;
	int l=10;
	while (l--)
	{
		int k = u;
		while ((k-=700) > 0)
		{
			sendport(1);
			usleep(k);
			sendport(0);
			usleep(u-k);
		}
		k=0;
		while ((k+=700) < u)
		{
			sendport(1);
			usleep(k);
			sendport(0);
			usleep(u-k);
		}
	}
	sendport(0);
}
Fade ефект со 2 диоди
Код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

#define base 0x0378           /* printer port base address */

int sendport(int i)
{                    
	if (!ioperm(base,1,1)) {
		outb((unsigned char)i, base);
		return 1;
	}
	else { return 0; }
}

int main()
{
	int k = 20000;
	int u = k;
	int l=10;
	while (l--)
	{
		int k = u;
		while (k-=500)
		{
			sendport(2);
			usleep(k);
			sendport(4);
			usleep(u-k);
		}
		k=0;
		while ((k+=500) < u)
		{
			sendport(2);
			usleep(k);
			sendport(4);
			usleep(u-k);
		}
	}
	sendport(0);
}
 

MetalGear

On your way to fame
14 април 2007
2,997
507
www.ibiz.mk
Ufffff Алекс е оваа не сум го знаел
најголем дел програмирам микроконтролери но лед диоди не сум
ај ке го пробам оваа за викенд :bravo:
 

Nikol4e

Intern
12 јануари 2008
72
2
Алекс твојот пост е ОК само што Петар бара код во Visual Basic, а не во C :D
епа вака пепи..
прво ќе го спуштиш http://www.geekhideout.com/downloads/io.dll и ќе го копираш во C:\windows\system\io.dll

потоа отвори нов проект во VB, стај еден тајмер ( Timer1 ) и пиши го кодов:
Код:
Private Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Dim state As Integer

Private Sub Form_Load()
    state = 0
    Call PortOut(888, 0)
    Timer1.Interval = 500
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Call PortOut(888, 2 ^ state)
    state = state + 1
    If state >= 8 Then state = 0
End Sub
 
  • Ја почнал/а темата
  • #6

petar.bt

Intern
12 август 2007
731
20
малце од малце ми се разјасниа работите само дали ке може да најдете некоја шема за да го испробам тоа.
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
Nikol4e, Реков... на windows не најдов начин како да се исклучи волтажата при стартување .. Незнам дали ќе може да се оствари тоа на windows. И кодот го наведов како пример.

Иначе за шема, Петар, не е ничто комплексно, имаме 25 пина на портот, сите се обележани со бројки, тебе те интересираат само пиновите од 2 до 9 таму можеш да ставаш податоци за уклучување, за маса ќе земеш пин 18 или пак масата на паралелниот порт. Меѓу еве на пример пин 2 и лед диодата треба да имаш отпорник за обична диода стави 200OHm или околу таа вредност за да ја намали струјата што тече низ портот и да не дојде до прегорување на портот.

Еве една “шема“:

 
  • Ја почнал/а темата
  • #8

petar.bt

Intern
12 август 2007
731
20
ке пробам и ке ви кажам дали успеав:D:D
 

GigaC

Intern
23 април 2008
344
7
www.xeezi.com
Може е касно за ова...но сакам да прашам нешто поврзано со ова тема.

Како можам да ги светнам или изгаснам ламбичките/LED диодите на тастатура (Num Lock, Caps Lock, Scroll Lock) со помош на Visual Basic :zbunet3:
 

fuUuUzZzZy

On your way to fame
14 декември 2007
4,842
885
Ohrid
хммз.. Дали ова би придонело нешто за темава?

Иако темава е стара, сепак можеби на некој ќе му затреба.
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
GigaC тоа е друга тематика која не одговара на темата, за понатамошно прашања во врска со тоа те молам отвори нова тема.
 

Нови мислења

Последни Теми

Статистика

Теми
43,498
Мислења
821,851
Членови
28,042
Најнов член
Puffy
На врв Дно