LED som Touch Sensor

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

Tack!

EDIT: Fast måste man ha två paralellkopplade motstånd? Räcker det inte med ett av ett annat värde? (vilket isåfall?)
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Totala resistansen för parallelkoplade motstånd:

R1 * R2
---------
R1 + R2



Ett 750 ohm´s motstånd funkar alltså lika bra.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Bra förklarat DragonOrb :tumupp:
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

hur noga är det med den resistansen?
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Beror ju på vad du har för led.
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

om jag har en röd led som jag använder ett motstånd på 330Ω till, funkar det med det motståndet till detta då?

EDIT: Svarar mig själv, det gjorde det :)
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Det låter som om du har fått igång en LED Touch Sensor!?

Fungerar det bra?

Har du samma "prestanda" med en röd LED som jag hade med min blåa LED??
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Jag har nu också kopplat upp en likadan.

Kör med en röd led som sensor, funkar väldigt bra.
Håller på och experimenterar lite för att få sensorleden att lysa också.

Återkommer :)

edit: Nu lyser även sensorleden :) , nu är det dags att utöka antal knappar :)
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Trevligt att andra oxå får det att fungera...

Det borde inte vara några större problem att få till lite fler "knappar"!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Detta har igentligen inget med själva applikationen att göra, men
jag tänkte bara flika in ett par kod-tips som gör koden lite lättare
att läsa (inte för att den är *svår* att läsa nu, men i alla fall... :-)
)

Om du i början av koden lägger till :

Kod: Markera allt

#define   LED_Ind     porta,1
#define   LED_Sens    portb,5
#define   LED_Sens_t  trisb,5
så kan du senare i koden skriva:

Kod: Markera allt

          bcf         LED_Sens_t
...
...
          bsf         LED_Ind
          btfss       LED_Sens
o.s.v.

Det gör nästan kommentarerna på dessa rader överflödiga, men viktigast
är att det blir skitenkelt att flytta de två LED'arna till andra pinnar, bara
ett ställe i "headern" på koden att ändra...

Sedan, ett problem med att göra bcf/bsf själv direkt på STATUS, RPx bitarna
är just att du *själv* måste kolla vilken bank det aktuella registret ligger i.
Det vet ju redan MPASM, så låt MPASM fixa det åt dig med BANKSEL.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

sodjan >> Sedan, ett problem med att göra bcf/bsf själv direkt på STATUS, RPx bitarna
är just att du *själv* måste kolla vilken bank det aktuella registret ligger i.
Det vet ju redan MPASM, så låt MPASM fixa det åt dig med BANKSEL.


Hur fungerar BANKSEL?
Jag hittade detta på microchip.com

Kod: Markera allt

movlw  b00101000  ; setup value into W register
banksel SSPCON1     ; select SFR bank
movwf SSPCON1       ; configure for Master I2C
Innebär det att jag skulle kunna skriva enligt följande?

Kod: Markera allt

banksel TRISA     ; select TRISA bank
bsf TRISA,5         ; Make  RA5 to a input
Sen hoppar programmet tillbaka och körs som vanligt?

Det är alltid bra med lite tips och trix i programmerings djungelen!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Hur fungerar BANKSEL?

Om du instället för svepande frågor är lite mer specifik om vad som
var oklart i manualen, så blir det enklare att svara.

Så, vilken del av beskrivningen av BANKSEL är oklar eller otydlig ??
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Efter bakläxa från Sodjan :oops: så har jag läst på och kommit fram till följande!

Om man vill byta till en BANK där en funktion finns så skriver man helt enkelt bara "BANKSEL funktionnamn" och då kommer det att genereras kod som byter till just den BANKen där den funtionen finns. Sen får man inte glömma att byta tillbaka igen om det nu är så att man t.ex. bara skulle ändra i TRISA och sedan skall köra vidare i sitt program.

Code exempel är ifrån User guide ASM...

Kod: Markera allt

#include p16f877a.inc      ;Include standard header file
                           ;for the selected device.
banksel TRISB              ;Since this register is in bank 1,
                           ;not default bank 0, banksel is
                           ;used to ensure bank bits are correct.
clrf TRISB                 ;Clear TRISB. Sets PORTB to outputs.
banksel PORTB              ;banksel used to return to bank 0,
                           ;where PORTB is located.
movlw 0x55                 ;Set PORTB value.
movwf PORTB
goto $
end                        ;All programs must have an end.
Enligt detta så måste man ändå ha ganska bra koll på vilken funktion som finns i vilken bank...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Om man vill byta till en BANK där en funktion finns...
> ...
> Enligt detta så måste man ändå ha ganska bra koll på vilken
> funktion som finns i vilken bank...

(*Register*, inte "funktion"...)
Banker har inget att göra med var programkoden finns.

Med BANKSEL behöver man *inte* veta i vilken bank register ligger.

Jag ser inte av exemplet från manualen varför du tycker det ?
Det använder BANKSEL före både TRISB och PORTB och man behöver inte
veta i vilken bank som någon av dessa ligger. De skulle kunna ligga i vilken
som helst av processorns 4 banker, och koden fungerar ändå.

Dock, det finns naturligtsvis även en nackdel med BANKSEL, den håller
inte reda på i vilken bank Man befinner sig, så den kommer ofta att generera
"onödig" kod. Om detta är ett problem, så måste man fortfarande gå in
som programmerare och "trimma" koden.

Men vid tester (som t.ex din kod) så kan BANKSEL undvika de mest
enkla buggarna.

Sen finns det utvecklingsmiljöer för PIC assembler som innehåller
funktioner för bank-hantering som även håller reda på vilken bank
som är vald, och som enbart sätter in BCF/BSF instruktioner när det
är nödvändigt, men det är en annan historia... :-)
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Det var spännande Sodjan. Det visste jag inte att det fanns stöd för. Inte i Mplab antar jag? Man tycker ju onekligen att en kompilator har all info för att veta om banksel behövs eller inte..
Skriv svar