timer met ATtiny85 probleem
9 berichten
• Pagina 1 van 1
timer met ATtiny85 probleem
Momenteel ben ik bezig met maken en programmeren van een timer op basis met een ATtiny85.
Om het programma goed te kunnen testen heb ik gebruik gemaakt van een Arduino Micro. De opzet van het programma is dat het een soort variabele afvalvertraging.
D.m.v een potmeter is de afvaltijd in te stellen. Met de Micro werkte dit goed. Daarna het programma over gezet naar een ATtiny85 ogenschijnlijk gaat alles goed.
Wanneer ik nu het ingangscontact sluit wordt de uitgang actief en blijft actief.
Als ik nu de potmeter geheel naar gnd draai wordt de uitgang alleen actief op het moment dat het contact gesloten wordt. Draai ik nu de potmeter naar de 5V dan wordt de uitgang actief en blijft actief.
Wat kan hier de oorzaak van zijn, volgens mij moet ik met de potmeter een waarde kunnen maken van 0 tot 1024 zodat ik hiermee de tijd kan bepalen.
Dit werkte wel bij de Micro.
Hierbij het gebruikte programma.
Programma voor afvalvertraging
*/
int (potm) = 2; // potmeter voor tijdsinstelling
int (comp) = 3; // aansturing vanaf compressor Pin 3
int (relais) = 1; // aansturing relais ventilator Pin 1
int X; // uitlezen waarde potmeter
int C; // uitlezen kontakt compressor
int Z; // counter voor timer
void setup ()
{
pinMode (potm,INPUT);
pinMode (relais,OUTPUT);
pinMode (comp,INPUT);
Z = 0;
}
void loop()
{
C = digitalRead(3);
if (C== LOW)
{
digitalWrite( relais,HIGH);
Z = 1;
}
else
{
digitalWrite( relais,LOW);
Z = 0;
}
X = analogRead (potm);
// X = potm;
// X = potm * 5; // waarde 0 tot 1024 * 5 tijd 0 tot 10 minuten
if (Z == 1 )
{
for (int T = 0; T < X; T ++)
{
digitalWrite (relais,HIGH);
delay(100);
C = digitalRead(4);
if (C == LOW)
{
T = 0;
}
}
digitalWrite(relais,LOW);
Z = 0;
}
Z = 0;
}
// ***************************************** EINDE PROGRAMMA *****************************
Om het programma goed te kunnen testen heb ik gebruik gemaakt van een Arduino Micro. De opzet van het programma is dat het een soort variabele afvalvertraging.
D.m.v een potmeter is de afvaltijd in te stellen. Met de Micro werkte dit goed. Daarna het programma over gezet naar een ATtiny85 ogenschijnlijk gaat alles goed.
Wanneer ik nu het ingangscontact sluit wordt de uitgang actief en blijft actief.
Als ik nu de potmeter geheel naar gnd draai wordt de uitgang alleen actief op het moment dat het contact gesloten wordt. Draai ik nu de potmeter naar de 5V dan wordt de uitgang actief en blijft actief.
Wat kan hier de oorzaak van zijn, volgens mij moet ik met de potmeter een waarde kunnen maken van 0 tot 1024 zodat ik hiermee de tijd kan bepalen.
Dit werkte wel bij de Micro.
Hierbij het gebruikte programma.
Programma voor afvalvertraging
*/
int (potm) = 2; // potmeter voor tijdsinstelling
int (comp) = 3; // aansturing vanaf compressor Pin 3
int (relais) = 1; // aansturing relais ventilator Pin 1
int X; // uitlezen waarde potmeter
int C; // uitlezen kontakt compressor
int Z; // counter voor timer
void setup ()
{
pinMode (potm,INPUT);
pinMode (relais,OUTPUT);
pinMode (comp,INPUT);
Z = 0;
}
void loop()
{
C = digitalRead(3);
if (C== LOW)
{
digitalWrite( relais,HIGH);
Z = 1;
}
else
{
digitalWrite( relais,LOW);
Z = 0;
}
X = analogRead (potm);
// X = potm;
// X = potm * 5; // waarde 0 tot 1024 * 5 tijd 0 tot 10 minuten
if (Z == 1 )
{
for (int T = 0; T < X; T ++)
{
digitalWrite (relais,HIGH);
delay(100);
C = digitalRead(4);
if (C == LOW)
{
T = 0;
}
}
digitalWrite(relais,LOW);
Z = 0;
}
Z = 0;
}
// ***************************************** EINDE PROGRAMMA *****************************
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: timer met ATtiny85 probleem
Als je een analoge pin wil lezen als analoog zou ik A0,A1 etc gebruiken. Nu probeer je een digitale pin analoog te lezen. Let je ook op de juiste mapping van de pinnen op de Attiny?
Re: timer met ATtiny85 probleem
wiltitech schreef: C = digitalRead(4);
if (C == LOW)
{
T = 0;
}
En is dit een typo? Ik zie pin 4 verder nergens voor komen.
We do what we must because we can.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: timer met ATtiny85 probleem
Standaard is een pin bij de Arduino op input. Gaat dus goed.
Re: timer met ATtiny85 probleem
Het klopt
C = digitalRead(4); had digitalRead(3); moeten zijn.
De timer werkt nu naar behoren.
Bedankt voor jullie reactie.
leon
C = digitalRead(4); had digitalRead(3); moeten zijn.
De timer werkt nu naar behoren.
Bedankt voor jullie reactie.
leon
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: timer met ATtiny85 probleem
Wel vreemd dat het programma wel werkte op de micro als die digitalRead(4) ook verkeerd was?????
Re: timer met ATtiny85 probleem
Met de micro werkte het wel goed daar de potmeter wel op een analoge ingang zat.
Waarschijnlijk is het fout gegaan bij het omnummeren terwijl de potmeter wel op de goede aansluiting zat.
Alles werkt nu de tijd is goed instelbaar.
In ieder geval bedankt voor het meedenken.
groeten Leon
Waarschijnlijk is het fout gegaan bij het omnummeren terwijl de potmeter wel op de goede aansluiting zat.
Alles werkt nu de tijd is goed instelbaar.
In ieder geval bedankt voor het meedenken.
groeten Leon
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: timer met ATtiny85 probleem
Overigens snap ik niet helemaal wat je hiermee wilde?
cpp code
Zelf werk altijd met define
dus:
cpp code
En dan in je programma refereren naar POTM, COMP en RELAIS etc. Dan hoef je alleen maar in het begin van je programma de pinnen te veranderen als je wisselt van cpu.
cpp code
int (potm) = 2; // potmeter voor tijdsinstelling
int (comp) = 3; // aansturing vanaf compressor Pin 3
int (relais) = 1; // aansturing relais ventilator Pin 1
Zelf werk altijd met define
dus:
cpp code
#define POTM 2 // potmeter voor tijdsinstelling
#define COMP 3 // aansturing vanaf compressor Pin 3
#define RELAIS 1 // aansturing relais ventilator Pin 1
En dan in je programma refereren naar POTM, COMP en RELAIS etc. Dan hoef je alleen maar in het begin van je programma de pinnen te veranderen als je wisselt van cpu.
Re: timer met ATtiny85 probleem
er is wel een verschil hoor:
met int kun je de waarde in het programma tijdens het runnen veranderen, en dat gaat met define dus niet.
alle beginners doen het met INT, tot ze de voordelen van define zien.
met int kun je de waarde in het programma tijdens het runnen veranderen, en dat gaat met define dus niet.
alle beginners doen het met INT, tot ze de voordelen van define zien.
paul deelen
shooter@home.nl
shooter@home.nl
9 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: axxiova, tavopitipv en 23 gasten