diff --git a/README.md b/README.md deleted file mode 100644 index f1be63c..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# pra-utripalka - -Arduino krmilnik (Pro mini klon z ATMEGA 328P), ki računa praštevila. Z interno LED lučko šteje sekunde (približno), z zunanjo pa indicira praštevilo sekundnih utripov. Narejeno za darilo. \ No newline at end of file diff --git a/README.org b/README.org new file mode 100644 index 0000000..29a3e47 --- /dev/null +++ b/README.org @@ -0,0 +1,19 @@ +#+TITLE: Pra-utripalka + +* Splošno + +Arduino krmilnik (Pro mini klon z ATMEGA 328P), ki računa praštevila. Z interno LED lučko šteje sekunde (približno), z zunanjo pa indicira praštevilo sekundnih utripov. Narejeno za darilo. + +* Izboljšave +- nižja poraba energije +- ko se cache napolni, nadaljuj z "ročnim štetjem" naprej +- prijaznejše polnjenje? +- solarno napajanje? + +* Slike + +[[file:./slike/IMG_20240326_210837.jpg]] + +[[file:./slike/IMG_20240326_210902.jpg]] + +[[file:./slike/IMG_20240326_210911.jpg]] diff --git a/blink_prastevilo/blink_prastevilo.ino b/blink_prastevilo/blink_prastevilo.ino new file mode 100644 index 0000000..7b34f9b --- /dev/null +++ b/blink_prastevilo/blink_prastevilo.ino @@ -0,0 +1,92 @@ +#include "EEPROM.h" + +// Interni LED - sekunde +#define iLED 13 + +// Zunanji LED - prastevila +#define eLED 5 + +// Splosni stevec +uint16_t stevec = 0; + +// Polje za ze-izracunana prastevila +uint16_t prastevila[512]; +uint16_t st_prastevil = 0; +// Naslednje prastevilo; 1 ni prastevilo, ampak funkcija za "naslednje" zacne z 2 +uint16_t naslednje_prastevilo = 1; + +bool je_prastevilo(uint16_t st) { + uint16_t polovica = st / 2; + + for (uint16_t i = 0; i < st_prastevil; i += 1) { + if (prastevila[i] > polovica) { + return true; + } + if ((st % prastevila[i]) == 0) { + return false; + } + } + + // Samo pr prvem - 2 + return true; +} + +uint16_t get_naslednje_prastevilo() { + uint16_t naslednje = naslednje_prastevilo + 1; + while (!je_prastevilo(naslednje)) { + naslednje += 1; + } + + prastevila[st_prastevil] = naslednje; + naslednje_prastevilo = naslednje; + st_prastevil += 1; + + Serial.println(naslednje); + + return naslednje; +} + +void zapisi_stevilo(int16_t st) { + EEPROM.write(0, st >> 8); + EEPROM.write(1, st & 0xFF); +} + +uint16_t beri_stevilo() { + return (EEPROM.read(0) << 8) + EEPROM.read(1); +} + +void setup() { + pinMode(iLED, INPUT_PULLUP); + pinMode(eLED, OUTPUT); + + Serial.begin(9600); + + uint16_t naslednje = 0; + uint16_t shranjeno = beri_stevilo(); + if (shranjeno > 0) { + while (naslednje_prastevilo < shranjeno - 1) { + get_naslednje_prastevilo(); + } + } else { + get_naslednje_prastevilo(); + } +} + +void loop() { + stevec += 1; + digitalWrite(iLED, HIGH); + + // Je prastevilo? + if (stevec == naslednje_prastevilo) { + digitalWrite(eLED, HIGH); + stevec = 0; + naslednje_prastevilo = get_naslednje_prastevilo(); + zapisi_stevilo(naslednje_prastevilo); + } + delay(500); + + digitalWrite(iLED, LOW); + delay(500); + + digitalWrite(eLED, LOW); +} diff --git a/prastevila-vsota.py b/prastevila-vsota.py new file mode 100755 index 0000000..43de531 --- /dev/null +++ b/prastevila-vsota.py @@ -0,0 +1,26 @@ +#!/usr/bin/python3 + +from functools import reduce + +prastevila = [] + +def jePrastevilo(st): + polovica = st / 2 + for p in prastevila: + if (p > polovica): + prastevila.append(st) + return True + + if (st % p) == 0: + return False + + prastevila.append(st) + return True + +for i in range(2, 65535): + if (len(prastevila) == 128): + break + print("Prastevilo ?", i, jePrastevilo(i)) + +print("Vsota: ") +print(reduce(lambda x, y: x+y, prastevila, 0)) diff --git a/slike/IMG_20240326_210837.jpg b/slike/IMG_20240326_210837.jpg new file mode 100644 index 0000000..a1da31d Binary files /dev/null and b/slike/IMG_20240326_210837.jpg differ diff --git a/slike/IMG_20240326_210902.jpg b/slike/IMG_20240326_210902.jpg new file mode 100644 index 0000000..25b82a8 Binary files /dev/null and b/slike/IMG_20240326_210902.jpg differ diff --git a/slike/IMG_20240326_210911.jpg b/slike/IMG_20240326_210911.jpg new file mode 100644 index 0000000..7b7e48e Binary files /dev/null and b/slike/IMG_20240326_210911.jpg differ