Op Elektronicaforum.nl is de kans om een antwoord op je vraag te krijgen heel groot. In overzichtelijke subcategorieën kun je vragen en antwoorden over elektronica zoeken, plaatsen en beantwoorden.
Elektronica Forum is onderdeel van Schakelingen Online
 


 
Atmega16 uitbreiden

 
Plaats nieuw bericht   Plaats Reactie    Schakelingen Online Forum Index -> Digitaal
Auteur Bericht
Sjacheraar



Geregistreerd op: 18-2-2012
Berichten: 53
Woonplaats:

BerichtGeplaatst: Za 15 Apr 2017, 22:48    Onderwerp: Atmega16 uitbreiden Reageer met quote

Ik heb een AtMega16 welke ik gebruik om valsnelheden te meten.
Echter wil ik deze uitbreiden met een paar knopjes om het gewicht in te kunnen stellen van het te vallen object.
Het gewicht was in de eerste instantie niet van belang, er werd altijd met het zelfde gewicht gewerkt.
Maar nu verandert regelmatig het gewicht en wil ik ook de Joules kunnen meten van verschillende objecten / gewichten.
Hardware is geen probleem, die is aanwezig en werkt, en een paar knopjes extra aanbouwen is ook geen probleem.
Maar de software wel, dus is er iemand die mij als "non-programmeur" kan helpen om eea voor elkaar te krijgen ?
Programma is in C geschreven en vrij kort, geen gekke dingen zover ik kan zien of ben tegen gekomen.

Bedankt.
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
bask185



Geregistreerd op: 4-9-2014
Berichten: 9
Woonplaats: alkmaar

BerichtGeplaatst: Di 2 Mei 2017, 17:09    Onderwerp: Reageer met quote

ehm ik ben verward. Je bent een niet programmer maar je hebt wel een atmega16 aan de praat gekregen die met een of andere I2c accelerometer ofzo kan communiceren? En je kan niet eens een simpele I/O pin inlezen???

Om een I/O van een atmega te lezen, kan je gebruik maken de PIN instructie. Als je met de arduino IDE werkt, kan je digitalRead(); gebruiken.

De PIN instructie is vrij standaard en ziet er als volgt uit:

#define knop1 0b00001000

unsigned char x = PINB

if(x & knop1 > 0) { // als knop1 is ingedrukt, doe dit...
}

Om overzicht aan te leggen gebruik ik een define. Elke keer als je in je code knop1 tikt, staat er eigenlijk de binaire waarde 0b00001000. In dit voorbeeld komt dit overeen met pin 3 van port B (je moet van rechts lezen, de meest rechter bit komt overeen met pin B0)

Ik declareer een unsigned char genaamd x. Dat is een variabele type van 1 byte groot met een bereik van 0 tot 255 decimaal. En daar stop ik de waarde van port B in.

PINB is het input register van port B. De waarde van PINB komt overeen met de stand van de pinnen van poort B. Als op alle pinnen 5V staat dan bevat PINB de waarde 0b11111111. Als alleen pin B0 5V is, dan is de waarde 0b00000001 etc etc.

De & is een AND mask. Door de waarde van x te AND'en met knop1 ( of 0b00001000) kijkt de if functie alleen maar pin B3. Als x bijvoorbeeld de waarde 0x11111111 heeft dan is het resultaat van x & knop1 0x00001000. Als x de waarde 0x11110111 heeft dan is het resultaat 0b00000000. Beide bits moeten dus waar zijn om er een logische 1 uit te krijgen. Als ook maar 1 enkel bitje van x hoog is, dan is x > 0 en wordt de if functie uitgevoerd.

Alle pinnen zijn standaard ingesteld als INPUT dus daar hoef je niks aan te doen.
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Sjacheraar



Geregistreerd op: 18-2-2012
Berichten: 53
Woonplaats:

BerichtGeplaatst: Di 2 Mei 2017, 17:32    Onderwerp: Reageer met quote

Het is geen accelerometer, maar twee lichtsluisjes op 9 cm afstand van elkaar waar het doorheen valt.
Als je wilt kan ik je de code/schema eventueel toe sturen zodat je kan zien wat het programma doet.
Je krijgt dan waarschijnlijk meer inzicht in het geheel dan wat je nu hebt.

Alvast bedankt.
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Sjacheraar



Geregistreerd op: 18-2-2012
Berichten: 53
Woonplaats:

BerichtGeplaatst: Ma 16 Okt 2017, 14:07    Onderwerp: Reageer met quote

Ik zie nu pas dat je in Alkmaar woont en wat wil het toeval....ik ook.

Ik heb het programma gekregen en ben zelf opzoek gegaan waar ik wat kan veranderen in het programma om de juiste waarde te krijgen die ik wil hebben.
Nadeel is dat ik telkens het doosje moet open maken en het programma moet uploaden naar de ATmega als ik wat verander.

Wat ik eigenlijk zou willen zijn 3 knopjes, knopje waarde veranderen aan, knopje hoger, knopje lager en dan weer terug met knopje waarde veranderen.

Ik ben in zijn geheel niet thuis in programmeren en zou niet weten wat ik waar moet zetten of aan moet sluiten.
Ben wel technisch op elektronica gebied, maar programma's schrijven is er nooit van gekomen.......iets te oud (63) voor.
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Plaats nieuw bericht   Plaats Reactie    Schakelingen Online Forum Index -> Digitaal Tijden zijn in GMT + 2 uur
Pagina 1 van 1                     

 
Ga naar:  
Je mag geen nieuwe onderwerpen plaatsen
Je mag geen reacties plaatsen
Je mag je berichten niet bewerken
Je mag je berichten niet verwijderen
Ja mag niet stemmen in polls
Je mag geen attachments plaatsen in dit forum
Je mag bestanden downloaden in dit forum


Powered by phpBB © 2001, 2002 phpBB Group and phpBB SEO