Kodlås-resistorer

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31535
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Använd fler utgångar för lysdioderna. en för hundratal, en för tiotal och en för ental.
T.ex först 7 entalsblink, sen 3 tiotalsblink och sist 1 hundratalsblink. 137. :)

Eller samma lysdiod, med en liten paus mellan ental/tiotal osv.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

hmm... Det var en bra idé :) undra hur man lättast gör det med en PIC... Om man på något sätt lyckades dela upp variablen så att första sifran kommer i en variabel o andra sifran i en annan variabel osv, eller finns det ett lättare sätt att få den att blinka så?

Edit: Någon som har förslag på BILLIGA strömbrytare som är lätta att montera på en mettalplåt?

//Daniel A
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Jag har nu med hjälp lyckats få en display att visa värdet på variablen.

Men det värdet kan skilja väldigt mycket... Är detresistorerna som ändrar resistans med tempen eller är det kondensatorn? :?

värdena på mina kondensatorer är:
Edit: Oj, vad har jag skrivit ?! Jag menar såklart resistorer :oops:

1
2
4,5
5,5
6,5
7,5
9,1
10
11
14,5

(KΩ)

//Daniel A
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Hur stor skillnad blir det på värdet från gång till gång?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

När jag inte trycker på någon knapp ligger det mellan 196 och 204 när jag trycker på 1k knappen varierar det mellan 190-199 ungefär.

//Daniel A
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31535
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Du kan inte räkna med att få exakt samma värde hela tiden. Du måste ta ett medel alternativt kolla om värdet ligger inom ett intervall. Sen verkar det som om du behöver ha steg på större än 1k. 2k t.ex. :
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Kan jag få det mer exakt med en ADC? Eller är det motstånden som ändrar resistans? Värkar som om det blir att beställa nya motstånd...

//Daniel A
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31535
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Det kan nog bli lite bättre med en adc, men du kan ändå inte räkna med att en knapp t.ex alltid har värdet 154. Du måste kolla om inläst värde ligger mellan två gränser.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Ok, då får jag lära mig använda ADC innan jag köper nya saker.
Hur testar ma om det ligger mellan två gränser med en PIC på lättaste sätt?

//Tack!
Användarvisningsbild
lgrfbs
Inlägg: 7319
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

min kod till växelknoppen använder samma idé, är skriven i mikroPascal.
hoppas det hjälper något.

Kod: Markera allt

program AD16F88;

{main procedure}
 //******************************************************************************
 // microcontroller : P16F88
 // -CONFIG-
 // [X] CP_OFF    [X] DEBUG_OFF  [X] WRT_ENABLE_OFF,
 // [X]CPD_OFF    [X]LVP_OFF     [X] BODEN_OFF,
 // [X]MCLR_OFF   [X] PWRTE_OFF  [X] WTD_OFF
 // [X] INTRC_IO
 // -CONFIG2-
 // [X] IESO_OFF  [X] FCMEN_OFF
 //
 // Version: 1.0.1.0
 // ---------------------------------------------------------------------------
 // Svenska.
 // Projekt: Växelknopp till Nissan Datsun 120A FII
 // Detta projekt är disangat att fungera med PIC 16F88.
 //
 // English.
 // Project: Shiftingnobb too Nissan Datsun 120A FII
 // This project is disaged too work with PIC 16F88.
 //******************************************************************************
Var
Vexel:Word;
Mode,Tic,Puls,Xeet,A,Intro:byte;

begin
 //Setup
 OSCCON := %11111110; // internal 8mHz osc
 ANSEL := 0;   // just want digital inputs - default is for ADC
 TRISA := 0; // designate gpio as output
 TRISB := 0;
 ADCON1:=0;
 CMCON:=7;     //turns off the comparitors
For Intro:=1 to 10 do
Begin
 //-Power on!
 PortA:=$00;    //1 - 00
 PortB:=$04;    //1 - 04
 delay_ms(300);
 PortA:=$10;    //3 - 04 NY
 PortB:=$00;    //3 - 00 NY
 delay_ms(300);
 PortA:=$04;    //4 - 04
 PortB:=$00;    //4 - 00
 delay_ms(300);
 PortA:=$40;    //5 - 40
 PortB:=$00;    //5 - 00
 delay_ms(300);
 PortA:=$00;    //6 - 00 NY
 PortB:=$01;    //6 - 01 NY
 delay_ms(300);
 PortA:=$00;    //7 - 00
 PortB:=$20;    //7 - 20
 delay_ms(300);
End;
Tic:=0;
Puls:=0;
Xeet:=0;
Mode:=1;

{ PortA:=$FF;    //8 - 86
 PortB:=$FF;    //8 - 30 ZI
 delay_ms(5000);

 PortA:=$01;    //8 - 86
 PortB:=$00;    //8 - 30 ZI
 delay_ms(18000);
 
 PortA:=$02;    //9 - 86
 PortB:=$00;    //9 - 30 ZI
 delay_ms(18000);
 
 PortA:=$00;    //10 - 86
 PortB:=$00;    //10 - 30 ZI
 delay_ms(18000);
 
 PortA:=$08;    //11 - 86
 PortB:=$00;    //11 - 30 ZI
 delay_ms(18000);
 
 PortA:=$10;    //12 - 86
 PortB:=$00;    //12 - 30 ZI
 delay_ms(18000);
 
 PortA:=$20;    //13 - 86
 PortB:=$00;    //13 - 30 ZI
 delay_ms(18000);
 
 PortA:=$40;    //14 - 86
 PortB:=$00;    //14 - 30 ZI
 delay_ms(18000);
 
 PortA:=$80;    //15 - 86
 PortB:=$00;    //15 - 30 ZI
 delay_ms(18000);
 
{ PortA:=$11;    //16 - 86
 PortB:=$31;    //16 - 30 ZI
 delay_ms(8000);    }

          
{
 delay_ms(1000);
 Vexel:=ADC_read(0);
 Vexel:=ADC_read(0);
 Vexel:=ADC_read(0);
 PortA:=$04;
 delay_ms(5000);
 PortA:=$00;
 For Intro:=0 to Vexel do
 Begin
  PortB:=$FF;
 delay_ms(300);
  PortB:=$00;
 delay_ms(300);
 End;


 }
 repeat         // beginning of a repeat endless loop
 Begin
  Tic:=Tic+1;
  If Tic=10 then
  Begin
   Puls:=Puls+1;
   If Puls=2 then Puls:=0;
   Tic:=0;
   Xeet:=Xeet+1;
  End;
  
  If Xeet=5 then
  Begin
   Mode:=Mode+1;
   Xeet:=0;
  End;
  
  If Mode=4 then
  Begin
   Mode:=1;
  End;







  Vexel:=0;
  A:=0;
  Vexel:=ADC_read(0);

  {If Vexel>0 then
  Begin
   If Vexel<=2 then
   Begin
    //Friläge
    PortB:=$C3;
    PortA:=$90;
   End;
  End;}
  If Vexel>=5 then
  Begin
   If Vexel<=170 then
   Begin
    //1
     PortA:=$80;
     PortB:=$00;
    A:=1;
   End;
  End;

  If Vexel>=171 then
  Begin
   If Vexel<=345 then
   Begin
    //2
    PortA:=$1A;
    PortB:=$51;
    A:=1;
   End;
  End;

  If Vexel>=346 then
  Begin
   If Vexel<=521 then
   Begin
    //3
    PortA:=$1A;
    PortB:=$13;
    A:=1;
   End;
  End;

  If Vexel>=525 then
  Begin
   If Vexel<=699 Then
   Begin
    //4
    PortA:=$18;
    PortB:=$83;
    A:=1;
   End;
  End;

  If Vexel>=700 then
  Begin
   If Vexel<=900 Then
   Begin
   //R
   PortA:=$1A;
   PortB:=$C5;
   A:=1;
   eND;
  End;
  
  If A=0 then
  Begin
   PortB:=$C3;
   PortA:=$90;
  End;


 End;
 until 0 = 1;     // endless loop (as this condition is never satisfied)

end.
Skriv svar