Attiny 25 Slaap dobbelsteen software

Arduino specifieke Software
Berichten: 1
Geregistreerd: 19 Jul 2018, 17:31

Attiny 25 Slaap dobbelsteen software

Berichtdoor Virtual_Burrito » 19 Jul 2018, 18:01

Beste forumleden,

Mijn naam is bas en ik heb redelijke ervaring met ardiuno.

Het programma dat ik wil schrijven bestaat uit 2 delen. 1 deel voor de attiny naar slaapmodus met een verbruik van 2 microampère. en 1 deel voor een dobbelsteen. Het idee is wanneer je op de knop drukt. De attiny wordt wakker stelt een willekeurig getal in, laat het 4 seconden zien en gaat weer slapen. Dit alles wordt aangedreven door een 3 volt coincell. Dat is de reden waarom het programma deel voor laag vermogen 2 micro-ampère.

Ik zal de codes hieronder plaatsen. Ik weet geen oplossing na het 1000 keer herschrijven van het programma, hopelijk weet iemand wat het is en kan het mij helpen.

Ik programmeer de attiny25 via de Arduino ISP

De attiny die ik gebruik is een ATTINY25. Attiny 25 1MHz.

dit is de slaapcode

Code: Alles selecteren
#include <avr/sleep.h>
#include <avr/interrupt.h>
const int switchPin                     = 3;
const int statusLED                     = 2;

void setup() {
    pinMode(switchPin, INPUT);
    digitalWrite(switchPin, HIGH);
    pinMode(statusLED, OUTPUT);
   
void sleep() {
    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT3);                   // Use PB3 as interrupt pin
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement
    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep
    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT3);                  // Turn off PB3 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on
    sei();                                  // Enable interrupts
    } // sleep
ISR(PCINT0_vect) {
    // This is called when the interrupt occurs,
    }

void loop() {
    sleep();
    digitalWrite(statusLED, HIGH);
    delay(1000);
    digitalWrite(statusLED, LOW);
    }


Verbruik in slaap was, zoals ik me herinner, 69μA - inclusief 20μA omdat de brown-outdetector is ingeschakeld, maar niet de 150μA ADC, die wordt uitgeschakeld door de code.
Dit zou meer als 1μA + brown-out moeten zijn, dus een beetje meer onderzoek is vereist - bijvoorbeeld, de analoge comparator neemt 35μA en ik weet niet zeker of dit standaard aan of uit staat.

Dit is de code voor de dobbelsteen

Code: Alles selecteren
int pinLeds1 = 3;
int pinLeds2 = 4;
int pinLeds3 = 1;
int pinLed4 = 0;
int buttonPin = 2;
int buttonState;
long ran;
int time = 2000;

void setup ()
{
  pinMode (pinLeds1, OUTPUT);
  pinMode (pinLeds2, OUTPUT);
  pinMode (pinLeds3, OUTPUT);
  pinMode (pinLed4, OUTPUT);
  pinMode (buttonPin, INPUT);
  randomSeed(analogRead(0));
}

void loop()
{
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH){
    ran = random(1, 7);
    if (ran == 1){
      digitalWrite (pinLed4, HIGH);
      delay (time);
    }
    if (ran == 2){
      digitalWrite (pinLeds1, HIGH);
      delay (time);
    }
    if (ran == 3){
      digitalWrite (pinLeds3, HIGH);
      digitalWrite (pinLed4, HIGH);
      delay (time);
    }
    if (ran == 4){
      digitalWrite (pinLeds1, HIGH);
      digitalWrite (pinLeds3, HIGH);
      delay (time);
    }
    if (ran == 5){
      digitalWrite (pinLeds1, HIGH);
      digitalWrite (pinLeds3, HIGH);
      digitalWrite (pinLed4, HIGH);
      delay (time);
   }
   if (ran == 6){
      digitalWrite (pinLeds1, HIGH);
      digitalWrite (pinLeds2, HIGH);
      digitalWrite (pinLeds3, HIGH);
      delay (time);
   }
  }
  digitalWrite (pinLeds1, LOW);
  digitalWrite (pinLeds2, LOW);
  digitalWrite (pinLeds3, LOW);
  digitalWrite (pinLed4, LOW);
}



Deze 2 codes zou ik graag willen combineren en op de ATTINY25 zetten

Commentaar bij de codes zijn in het engels aangezien ik veel in het engels werk.

Ik hoop dat iemand mij kan helpen

Advertisement

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten