Skip to content

jhrg/nixie-3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An alternative to the ShiftRegister74HC595 library is the builtin
shiftOut() function that is part of the Arduino IDE/libraries.

``` 
byte leds = 0;
bitSet(leds, i);

/*
 * updateShiftRegister() - This function sets the latchPin to low,
 * then calls the Arduino function 'shiftOut' to shift out contents
 * of variable 'leds' in the shift register before putting the 'latchPin' high again.
 */
void updateShiftRegister() {
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, leds);
    digitalWrite(latchPin, HIGH);
}
```

Faster pin reads. See https://forum.arduino.cc/t/digital-read-write-pinmode-fast-execution/89116

// --- PIN MODE: OUTPUT  --- 

  DDRD |= _BV (0); // pinMode (0, OUTPUT);
  DDRD |= _BV (1); // pinMode (1, OUTPUT);
  DDRD |= _BV (2); // pinMode (2, OUTPUT);
  DDRD |= _BV (3); // pinMode (3, OUTPUT);
  DDRD |= _BV (4); // pinMode (4, OUTPUT);
  DDRD |= _BV (5); // pinMode (5, OUTPUT);
  DDRD |= _BV (6); // pinMode (6, OUTPUT);
  DDRD |= _BV (7); // pinMode (7, OUTPUT);
  DDRB |= _BV (0); // pinMode (8, OUTPUT);
  DDRB |= _BV (1); // pinMode (9, OUTPUT);
  DDRB |= _BV (2); // pinMode (10, OUTPUT);
  DDRB |= _BV (3); // pinMode (11, OUTPUT);
  DDRB |= _BV (4); // pinMode (12, OUTPUT);
  DDRB |= _BV (5); // pinMode (13, OUTPUT);
  DDRC |= _BV (0); // pinMode (A0, OUTPUT);
  DDRC |= _BV (1); // pinMode (A1, OUTPUT);
  DDRC |= _BV (2); // pinMode (A2, OUTPUT);
  DDRC |= _BV (3); // pinMode (A3, OUTPUT);
  DDRC |= _BV (4); // pinMode (A4, OUTPUT);
  DDRC |= _BV (5); // pinMode (A5, OUTPUT);

// --- PIN MODE: INPUT  --- 

  DDRD &= ~_BV (0); // pinMode (0, INPUT);
  DDRD &= ~_BV (1); // pinMode (1, INPUT);
  DDRD &= ~_BV (2); // pinMode (2, INPUT);
  DDRD &= ~_BV (3); // pinMode (3, INPUT);
  DDRD &= ~_BV (4); // pinMode (4, INPUT);
  DDRD &= ~_BV (5); // pinMode (5, INPUT);
  DDRD &= ~_BV (6); // pinMode (6, INPUT);
  DDRD &= ~_BV (7); // pinMode (7, INPUT);
  DDRB &= ~_BV (0); // pinMode (8, INPUT);
  DDRB &= ~_BV (1); // pinMode (9, INPUT);
  DDRB &= ~_BV (2); // pinMode (10, INPUT);
  DDRB &= ~_BV (3); // pinMode (11, INPUT);
  DDRB &= ~_BV (4); // pinMode (12, INPUT);
  DDRB &= ~_BV (5); // pinMode (13, INPUT);
  DDRC &= ~_BV (0); // pinMode (A0, INPUT);
  DDRC &= ~_BV (1); // pinMode (A1, INPUT);
  DDRC &= ~_BV (2); // pinMode (A2, INPUT);
  DDRC &= ~_BV (3); // pinMode (A3, INPUT);
  DDRC &= ~_BV (4); // pinMode (A4, INPUT);
  DDRC &= ~_BV (5); // pinMode (A5, INPUT);

// --- DIGITAL WRITE: HIGH  --- 

  PORTD |= _BV (0); // digitalWrite (0, HIGH);
  PORTD |= _BV (1); // digitalWrite (1, HIGH);
  PORTD |= _BV (2); // digitalWrite (2, HIGH);
  PORTD |= _BV (3); // digitalWrite (3, HIGH);
  PORTD |= _BV (4); // digitalWrite (4, HIGH);
  PORTD |= _BV (5); // digitalWrite (5, HIGH);
  PORTD |= _BV (6); // digitalWrite (6, HIGH);
  PORTD |= _BV (7); // digitalWrite (7, HIGH);

  PORTB |= _BV (0); // digitalWrite (8, HIGH);
  PORTB |= _BV (1); // digitalWrite (9, HIGH);
  PORTB |= _BV (2); // digitalWrite (10, HIGH);
  PORTB |= _BV (3); // digitalWrite (11, HIGH);
  PORTB |= _BV (4); // digitalWrite (12, HIGH);
  PORTB |= _BV (5); // digitalWrite (13, HIGH);

  PORTC |= _BV (0); // digitalWrite (A0, HIGH);
  PORTC |= _BV (1); // digitalWrite (A1, HIGH);
  PORTC |= _BV (2); // digitalWrite (A2, HIGH);
  PORTC |= _BV (3); // digitalWrite (A3, HIGH);
  PORTC |= _BV (4); // digitalWrite (A4, HIGH);
  PORTC |= _BV (5); // digitalWrite (A5, HIGH);

// --- DIGITAL WRITE: LOW  --- 

  PORTD &= ~_BV (0); // digitalWrite (0, LOW);
  PORTD &= ~_BV (1); // digitalWrite (1, LOW);
  PORTD &= ~_BV (2); // digitalWrite (2, LOW);
  PORTD &= ~_BV (3); // digitalWrite (3, LOW);
  PORTD &= ~_BV (4); // digitalWrite (4, LOW);
  PORTD &= ~_BV (5); // digitalWrite (5, LOW);
  PORTD &= ~_BV (6); // digitalWrite (6, LOW);
  PORTD &= ~_BV (7); // digitalWrite (7, LOW);

  PORTB &= ~_BV (0); // digitalWrite (8, LOW);
  PORTB &= ~_BV (1); // digitalWrite (9, LOW);
  PORTB &= ~_BV (2); // digitalWrite (10, LOW);
  PORTB &= ~_BV (3); // digitalWrite (11, LOW);
  PORTB &= ~_BV (4); // digitalWrite (12, LOW);
  PORTB &= ~_BV (5); // digitalWrite (13, LOW);
  
  PORTC &= ~_BV (0); // digitalWrite (A0, LOW);
  PORTC &= ~_BV (1); // digitalWrite (A1, LOW);
  PORTC &= ~_BV (2); // digitalWrite (A2, LOW);
  PORTC &= ~_BV (3); // digitalWrite (A3, LOW);
  PORTC &= ~_BV (4); // digitalWrite (A4, LOW);
  PORTC &= ~_BV (5); // digitalWrite (A5, LOW);

// --- DIGITAL READ  --- 

  x = (PIND & _BV (0)) == 0; // digitalRead (0);
  x = (PIND & _BV (1)) == 0; // digitalRead (1);
  x = (PIND & _BV (2)) == 0; // digitalRead (2);
  x = (PIND & _BV (3)) == 0; // digitalRead (3);
  x = (PIND & _BV (4)) == 0; // digitalRead (4);
  x = (PIND & _BV (5)) == 0; // digitalRead (5);
  x = (PIND & _BV (6)) == 0; // digitalRead (6);
  x = (PIND & _BV (7)) == 0; // digitalRead (7);
  x = (PINB & _BV (0)) == 0; // digitalRead (8);
  x = (PINB & _BV (1)) == 0; // digitalRead (9);
  x = (PINB & _BV (2)) == 0; // digitalRead (10);
  x = (PINB & _BV (3)) == 0; // digitalRead (11);
  x = (PINB & _BV (4)) == 0; // digitalRead (12);
  x = (PINB & _BV (5)) == 0; // digitalRead (13);
  x = (PINC & _BV (0)) == 0; // digitalRead (A0);
  x = (PINC & _BV (1)) == 0; // digitalRead (A1);
  x = (PINC & _BV (2)) == 0; // digitalRead (A2);
  x = (PINC & _BV (3)) == 0; // digitalRead (A3);
  x = (PINC & _BV (4)) == 0; // digitalRead (A4);
  x = (PINC & _BV (5)) == 0; // digitalRead (A5);

About

Third nixie tube clock design and software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors