vineri, 27 decembrie 2013

PIC - Aplicatii cu Led-uri folosind PIC16F877 partea.I

Desi pe tot internetul gasim aceleasi aplicatii cu led-uri ( aprinderea unui led, led-ul care palpaie,etc....) si eu voi prezenta in continuare cateva aplicatii cu led-uri.

Cu ajutorul acestor aplicatii un INCEPATOR invata sa foloseasca microcontroller-ul, sa inteleaga cum se folosec porturile lui, cum ne 'jucam" cu ele, etc..., de aceea cine stie deja lucrurile acestea il rog sa nu ma "injure" si sa aiba rabdare ca voi posta si proiecte mai complicate.

Pornind de la schema urmatoare:


dorim sa facem ca ledurile D1,D2,..D8 sa se aprinda pe rand ( adica D1---D2---D3---D4---....---D8 api D8---D7---D6---....---D1).

Vom lucra in mediul "MikroC for PIC" produs de mikroelektronika,  iar ca placa de dezvoltare folosesc un EasyPIC6 produs tot de mikroelektronika.

Scrieu mai jos programul apoi il voi explica:

void main()
{
    int i;
    ANSEL=0;                  //configuram pinii microcontrollerului ca fiind digitali
    ANSELH=0;

   TRISB=0x00;                         //configuram portul B ca fiind un port de iesire
   PORTB=0x00000001;           // ii dam pinului RB0 de la portul B valoarea 1

   while(1)
    {
        for(i=0;i<7;i-->
          {
              PORTB=PORTB<<1   //  mutam la stanga cu o pozitie acel 1 din valoarea initiala a lui PORTB 
              Delay_ms(1000);            //  pana ajunge la pinul RB7
           }
     
        for(i=6;i>=0;i--)
           {
              PORTB=PORTB>>1;
              Delay_ms(1000);
            }
      }
}

TRISB : cu ajutorul acestui registru facem ca pinii de la portul B sa fiie pini de iesire sau de intrare. Daca ii facem de iesire atuncii microcontrollerul va scoate semnal din microntroller catre ceva iar daca este de intrare atunci microcontrollerul asteapta sa primeasca semnale de la ceva. In cazul nostru TRISB=0x00 adica de iesire.

PORTB: acest registru ne ajuta sa dam la fiecare pin al portului ce semnal vrem noi sa iasa. In cazul nostru PORTB=0x00000001, pinul RB0=1,RB1=0,RB2=0,....,RB7=0 adica pe pinul RB0 va iesi 1 logic (5v) si va cauza aprinderea led-ului D1.

PORTB=PORTB<<1 : semnul "<<" inseamna shift la stanga cu o unitate (casuta). Spre exemplu avem cazul nostru ,unde initial PORTB=0x00000001 iar apopi noi il shift-am (mutam) pe 1 de la sfarsit cu o casuta catre stanga de sase (6) ori: pt. i =0 avem PORTB=0x00000010; pt i=1 avem PORTB=00000100; si asa mai departe pana cand PORTB=0x10000000. Binenteles ca intre aceste mutari se executa si instructiunea Delay_ms(1000) care inseamna : asteapta ( intarzie continuarea executarii ) o secunda. Cand PORTB=0x10000000 atunci programul va executa urmatoul for ( for(i=6;i>=0;i--) ) si va shift-a ( muta ) pe 1 spre dreapta cu o unitate ( casuta ) pana cand PORTB=0x00000001, si apoi se reia de la inceput ( de la primul for. Aceste doua for-uri fiind incluse intr-o intructiune WHILE(1) se vor executa la infinit.


Acestea fiind spuse in continuare voi pune un filmulet in care este explicat si exemplificat practic

Filmulet prezentare aplicatie + simulare in Proteus:


Filmulet exemplificare practica:





duminică, 15 decembrie 2013

NETDUINO - Pulsare Led ( onboard) Netduino 2

Am vazut in articolul "Aprindere Led" cum aprindem led-ul de pe placa de dezvoltare Netduino2. Acum vom face ca acest led sa clipeasca, clipoceasca, blink-uiasca,palpaie,...... .
Modul de creare a unui nou proiect este acelasi :

Visual C# 2010 Express ------- New Project ------ MicroFramwork ------ Netduino2 application ----- etc.

Pentru ca led-ul sa palpie trebuie sa-l aprindem, il tinem aprins cateva milisecunde apoi il oprim ( stingem ), il tinem stins cateva milisecunde. Vom repeta aprins, stins la infint .

Codul de program:

public static void Main()
{
OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); // am declarat pinul la care este conectat                                                                                                              led-ul

while(true)     // repetare la infinit
{
         led.Write(true);  // aprindem led-ul
         Thread.Sleep(250);   // il tinem aprin 250 milisecunde
         led.Write(false);   //stingem led-ul
         Thread.Sleep(250);  // il tinem stins 250 milisecunde
}
}

In cazul in care vrem sa montam un led ( sa nu folosim ledul de pe placa ) trebuie sa stim la ce pin il conectam. In imaginea urmatoare am conectat un led la portul 13  si vreau ca sa palpaie acest led nu cel de pe placa.



Codul de program pentru a face led-ul conectat la portul 13 sa palpaie este:

public static void Main()
{
OutputPort led = new OutputPort(Pins.GPIO_PIN_13, false); // am declarat pinul la care este conectat                                                                                                              led-ul

while(true)     // repetare la infinit
{
         led.Write(true);  // aprindem led-ul
         Thread.Sleep(250);   // il tinem aprin 250 milisecunde
         led.Write(false);   //stingem led-ul
         Thread.Sleep(250);  // il tinem stins 250 milisecunde
}
}


Dupa cum vedeti singura diferenta este la declararea pinului la care este conectat led-ul: GPIO_PIN_13

Am postat si un filmulet in care va arat cum se face acest lucru ( PALPAIREA LED onboard NETDUINO2)

Adresa unde puteti vizualiza filmuletul: http://youtu.be/9E_OEWB_ZyY




marți, 10 decembrie 2013

NETDUINO - Aprindere LED cu Netduino 2

Placa de dezvoltare Netduino are un led inclus ( LED ).


Vom crea un proiect pentru al aprinde.

  • Accesam Visual C# 2010 Express

  • Click pe  " New Project....."
  • Click pe "MicroFramework" apoi selectal " Netduino2 application"

 In partea dreapta a ferestrei este "Solution Explorer", click pe "Program.cs"

Dupa ce am accesat " Program.cs" va apare urmatoarea fereastra


Codul nostru trebuie scris in clasa "public static void main()" unde scrie  " //write your code here "

In continuare voi scrie programul pentru aprinderea led-ului de pe placa Netduino:

public static void main()
{
       OutputPort led= new OutputPort( Pins.ONBOARD_LED,false);
       led.write(true);
}



O alta varianta este :

public static void main()
{
     OutputPort led = new OutputPort(Pins.ONBOARD_LED,true);
}


Dupa scrierea codului ( placa Netduino2 fiind conectata la PC) trebuie sa rulam programul astfel: DEBUG - START DEBUGGING


In acest moment are loc scrierea codului in microcontroller-ul placii Netduino, dupa care led-ul se va aprinde si va ramane aprins.







duminică, 8 decembrie 2013

Instalare Netduino 2

Netduino 2 este o platforma electronica " open source" ce utilizeaza .Net Micro Framework. Pentru detalii hardware accesati link-ul ( www.netduino.com/hardware ).
Pentru a utiliza Netduino veti avea nevoie de un calculator pe care sa ruleze Windows XP, Vista, & sau 8 si Visual Studio Express 2010 ( versiunea gratuita sau cea completa ).
Pentru inceput trebuie sa descarcati si sa instalati urmatoarele programe in aceasta ordine:

  1. Microsoft Visual C# Express 2010 . Dupa ce se descarca , se instaleaza.
  2. Microsoft .NET Micro Framework SDK v4.2 . Dupa ce se descarca, se instaleaza.
  3. Netduino SDK v4.2.2.0 ( 32 biti ) sau ( 64 biti ). Dupa ce se descarca, se instaleaza.

Daca pana acum totul a mers bine ( fara erori ) atunci calculatorul este pregatit de conectare cu placa de dezvoltare Netduino 2. Conectam cablul USB la calculator si microUSB la placa de dezvoltare. In acest moment sistemul de operare va cauta driver-ul si il va instala. Daca nu il gaseste deconectati cablul din calculator si il conecatil la loc.