Nja... fast bara en av oss kan ha rätt... Verkar som om jag missuppfattade vad som var vad här... Du ska alltså ha flera knappar, som X-IL sa, inte fler signaler ut... i så fall funkar det ju bra med dioderna som vi sa innan.
Re: Aktivera LEDs med knapptryckningar
Postat: 10 december 2010, 10:45:46
av oskars
Råkade beställa en Arduino Mega för att leka lite med =) Ska kanske bygga en liknande kontroller eller ersätta gamepad-hjärnan med den. Arduino verkar så otroligt kul!
Har lite funderingar över mina kopplingar jag gjort på gamepaden. Visst är det bara att ansluta min nuvarande GND till GND på Arduinon och sen 5V till Arduinons 5V och signalerna till pinnarna på Arduinon såklart. Sen borde ju LEDarna funka som dom gjorde innan
Arduinon passar bra till detta projektet, eftersom den erbjuder 54st digitala ingångar, och 16st analoga. Blir perfekt
Re: Aktivera LEDs med knapptryckningar
Postat: 10 december 2010, 11:40:18
av Klas-Kenny
Inte för att jag gillar Arduino (Känns inte så "riktigt" om man säger så, föredrar rena microprocessorer som PIC eller AVR), men ändå kul att du kommit in i µC'ernas värld, lycka till!
Re: Aktivera LEDs med knapptryckningar
Postat: 10 december 2010, 11:44:23
av oskars
Tack!
Förstår vad du menar Klas-Kenny! Men det är lagom "på riktigt" för mig
Är inte programmeringen och så mycket mer avancerad så fort man kommer utanför Arduino till t.ex PIC?
Kopplingarna bör va dom samma va?
Re: Aktivera LEDs med knapptryckningar
Postat: 10 december 2010, 11:52:36
av Klas-Kenny
Nja, PIC kan ju programmeras med C, vilket är ungefär lika lätt som Arduino, Assembly där emot är lite klurigare, men det är trevligt och väldigt lärorikt att se exakt hur det fungerar på (nästan) bitnivå.
Att koppla in med spänningar osv. bör vara exakt samma, ja.
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:09:55
av oskars
Det är så konstigt för det verkar som att det behövs motstånd för att koppla in en knapp?
Kolla denna bilden:
Det står så här angående det:
There's a 100Ω resistor we use to connect the input pin to either HIGH or LOW voltage. Why is it there? Well, lets say you accidentally set P2 to be an OUTPUT type pin, but then you connected it to 5V. If you write a LOW to the pin (0V) but its connected to HIGH (5V), you've basically caused a short circuit at that pin. This isn't very good for the pin and could damage it! The 100Ω resistor acts as a buffer, to protect the pin from short circuits.
Jag fattar ju att motståndet finns där för att inte pajja PINen, men jag behövde inte köra såna motstånd till gamepad pcb:t?
Känns konstigt att behöva använda det helt plötsligt. Och är det så, borde inte mina motstånd till LEDarna räcka?
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:19:06
av Klas-Kenny
Tror inte det är någon risk att du råkar göra om en ingång till utgång på Gamepaden, så det är ju ingen risk att det går sönder då
Visst är det en bra tanke att köra med motstånd där, av den anledning de beskriver, personligen har jag dock aldrig brytt mig om det. Kanske lite mera nödvändigt att vara försiktig med en Arduino som kostar några hundra, än en liten PIC värd ett par tior dock.
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:22:27
av oskars
Åhå, så det är om jag tabbar mig och göra fel med ingång/utgång?
Men lägger jag till 1k ohm motstånd till varje knapp så kommer ju det strula med mina LEDs
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:24:46
av jesse
Men du gör inte fel. Om du en gång satt dessa pinnar som ingångar så behöver du ju aldrig ändra på det någonsin. Skit i motståndet, det är helt onödigt, om du vet vad du gör.
Nu vet jag inte vad du tänkt göra, men du ska alltså ha ingångar på en Arduino kopplad till knapparna? Det finns ju fortfarande inget hinder att ha 100-1000-ohm motstånd till ingången, det påverkar ju i så fall varken knappar eller LED eller signalen till gamepaden.
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:28:58
av Klas-Kenny
Why is it there? Well, lets say you accidentally set P2 to be an OUTPUT type pin, but then you connected it to 5V. If you write a LOW to the pin (0V) but its connected to HIGH (5V), you've basically caused a short circuit at that pin.
Står ju ganska tydligt att det är för att skydda mot om du råkar konfigurera en pinne till utgång av misstag
Re: Aktivera LEDs med knapptryckningar
Postat: 14 december 2010, 14:39:51
av oskars
jesse skrev:Men du gör inte fel. Om du en gång satt dessa pinnar som ingångar så behöver du ju aldrig ändra på det någonsin. Skit i motståndet, det är helt onödigt, om du vet vad du gör.
Nu vet jag inte vad du tänkt göra, men du ska alltså ha ingångar på en Arduino kopplad till knapparna? Det finns ju fortfarande inget hinder att ha 100-1000-ohm motstånd till ingången, det påverkar ju i så fall varken knappar eller LED eller signalen till gamepaden.
Jag ska bara försöka föra över det jag gjort tidigare i denna tråden, till Arduinon. Arduinon ska sen skicka serial-signaler vid knapptryck som sen ska tolkas av programet JunXion som sedan konverterar serial-signalerna till MIDI =)
Klas-kenny, jo, kanske Sorry!
Edit: För att förtydliga. Ja ska bara köra arduino. Alltså ersätta gamepaden med arduinon.
Re: Aktivera LEDs med knapptryckningar
Postat: 28 april 2011, 20:27:28
av oskars
hehe... nej... jag är inte färdig med detta projektet än... Finns ju så mkt annat kul att göra... Plus att jag valt att bygga med Arduino nu, så det är ju lite till att lära sig... Och jag är ju nybörjare så att felsöka är inte så lätt... Men jag gör mitt bästa, och behöver nu hjälp igen...
Jag tycker det är jättebra att visa med filmer. Så jag har gjort en liten YouTube-film som bara ni här på forumet kan titta på. Vore jättetacksam om någon vill lyssna på min röst och mina problem!
Hej Bullen...
Det blev ganska dålig kvalité på filmen tyvärr. Men det kanske fungerar! =)
Stor humor lovas, stor kunskap kan jag INTE lova. =)
Re: Aktivera LEDs med knapptryckningar
Postat: 28 april 2011, 20:41:10
av Klas-Kenny
Det är inte så att Arduinon har några inbyggda pull-up eller pull-down, som då ger ström till LED'arna när de kopplas in?
Kolla igenom dokumentationen för Arduino om det finns någon "Internal pull-up/pull-down", i så fall är nog vad du vill att inaktivera det.
Har ingen koll på just Arduino, men på PIC finns detta, och ofta då bara på vissa portar, är det samma sak på Arduino så kan det förklara varför det bara ger ström på vissa utav LED'arna.
There are also convenient 20K pullup resistors built into the Atmega chip that can be accessed from software. These built-in pullup resistors are accessed in the following manner.
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
Note that the pullup resistors provide enough current to dimly light an LED connected to a pin that has been configured as an input. If LED's in a project seem to be working, but very dimly, this is likely what is going on, and the programmer has forgotten to use pinMode() to set the pins to outputs.
Note also that the pullup resistors are controlled by the same registers (internal chip memory locations) that control whether a pin is HIGH or LOW. Consequently a pin that is configured to have pullup resistors turned on when the pin is an INPUT, will have the pin configured as HIGH if the pin is then swtiched to an OUTPUT with pinMode(). This works in the other direction as well, and an output pin that is left in a HIGH state will have the pullup resistors set if switched to an input with pinMode().
Och jag definierar dom så här i min (JunXions) kod:
//int inputN[3] = {inputType, pinNo, dataResolution}
int input1[3] = {'d', 23, 1};
int input2[3] = {'d', 25, 1};
int input3[3] = {'d', 27, 1};
int input4[3] = {'d', 29, 1};
int input5[3] = {'d', 31, 1};
int input6[3] = {'d', 33, 1};
int input7[3] = {'d', 35, 1};
int input8[3] = {'d', 37, 1};
int input9[3] = {'d', 39, 1};
int input10[3] = {'d', 41, 1};
int input11[3] = {'d', 43, 1};
int input12[3] = {'d', 45, 1};
int input13[3] = {'d', 47, 1};
int input14[3] = {'d', 49, 1};
int input15[3] = {'d', 51, 1};
int input16[3] = {'d', 53, 1};
#define kUsedInputs 16 // the 'numUsedInputs' first inputs in the list are currently used
// IMPORTANT: always first define the digital inputs, then the analog ones!
int* inputs[kUsedInputs] = {input1,input2,input3,input4,input5,input6,input7,input8,input9,input10,input11,input12,input13,input14,input15,input16,};
unsigned short switches[4] = {0,0,0,0}; // memory space for up to 64 switches
int numUsedInputs = kUsedInputs;
int numUsedAnalogInputs = 0; // the 'o' inputs are also listed as analog inputs....
int numUsedDigitalInputs = 16;
int numDataBytes;
Typ... Förstår inte så mycket av det där med pull-down och pull-up resistorer... Men jag har trott att jag kan använda min krets som jag visar i filmen, den som dimmar leddarna... ?
EDIT: Den här tyckte jag skulle funka som PULL-DOWN? Se filmen vid 02:16:
Re: Aktivera LEDs med knapptryckningar
Postat: 28 april 2011, 21:03:11
av Klas-Kenny
Koden vågar jag inte säga något om, men det låter för mig som att det är pull-up som orsakar detta.
Pull-up är helt enkelt ett hög-ohmigt (tydligen 20k ohm i det här fallet) motstånd mot +5V, detta för att förhindra sk. flytande pinnar.
En ingång får aldrig vara flytande, dvs. varken "1" eller "0", för då vet µC'n inte vilket det är, som gör att mycket kan bli galet (hoppar mellan funktioner hej i vilt osv.).
Men du bör klara dig utan dessa, då det dras mot jord (Blir i princip pull-down) genom LED'arna.
Eller om du har kopplat dem mot +5V så blir det pull-up, så inga ingångar ska bli flytande även utan "internal pull-up".