Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float photoVal;
- const int ledPIN = 7;
- void setup()
- {
- Serial.begin(9600);
- enableADC();
- PORTD |= (1<<2); // internal pullup pin 2
- pinMode(ledPIN, OUTPUT);
- timerInterrupt();
- setButtonInterrupt();
- }
- void loop()
- {
- delay(1000);
- }
- //timer interrrupt
- ISR(TIMER1_COMPA_vect) {
- static byte state = LOW;
- static int counter = 0;
- counter++;
- if (counter >= photoVal)
- {
- state = !state;
- digitalWrite(ledPIN, state);
- counter = 0;
- }
- }
- //button interrupt
- ISR(INT0_vect) {
- photoVal = manualAnalogRead() + 100; // legger til 100 for å gi en minsteverdi
- Serial.print(photoVal);
- Serial.print("\n");
- }
- void timerInterrupt() {
- cli();
- //Clear registers
- TCCR1A = 0;
- TCCR1B = 0;
- TCNT1 = 0;
- //Timer control B
- //Set timer speed (prescaler)
- TCCR1B |= (1 << CS12);
- //Enable timer compare mode
- TCCR1B |= (1 << WGM12);
- //Set compare value
- OCR1A = 16000000 / 256 / 1000;
- //Enable compare interrupt
- TIMSK1 |= (1 << OCIE1A);
- sei();
- }
- void setButtonInterrupt() {
- cli();
- EICRA = (1 << ISC01); //ISC00 = CHANGE, ISC01 = FALLING(?)
- EIMSK |= (1 << INT0); //INT0 = PIN 2
- sei();
- }
- float manualAnalogRead()
- {
- ADCSRA |= (1 << 6);
- while (ADCSRA & (1 << 6));
- int val = ADCL;
- val |= (ADCH << 8);
- float r = val + 0.00;
- return r;
- }
- void enableADC() {
- //Setter bit 7 til 1
- ADCSRA |= (1 << 7);
- //XXXX0000 = A0
- ADMUX &= ~0xF;
- //bit 6 aka REFS0 til 1, intern reference
- ADMUX |= (1 << 6);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement