Hallo,
ich probiere im Moment viel mit dem DuinoCoin AVR-Miner. Mein Problem ist, das ich gerne Musik auf dem gleichen Arduino abspielen würde, solange wie dieser einen Hash ausrechnet. Mein aktueller Code:
uint32_t startTime = micros();
digitalWrite(motorPin, HIGH); //Hier sollte die Musik starten (habe als Placeholder mal einen Motor reingepackt)
// Call DUCO-S1A hasher
ducos1result = ducos1a(lastblockhash, newblockhash, difficulty);
// Calculate elapsed time
uint32_t elapsedTime = micros() - startTime;
digitalWrite(motorPin, LOW); //Und hier stoppen
Wie kann ich das machen? Ich dachte an eine Function welche die Musik spielt und asynchron am Start ausgeführt wird. Die Function müsste eine while Schleife beinhalten welche beim Startpunkt auf True gestellt wird und beim Stoppunkt auf False (so habe ich es bereits in einem PythonScript gemacht).
Ist das umsetzbar?
Falls es wichtig ist: Ich habe einen Uno R3 (original)
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Fragen die du beantworten könntest:
Wie viele Kerne hat dein Uno um etwas parallel laufen lassen zu können?
Wenn dein UNO nur einen Kern hat:
Ist dein ducos1a asyncron fähig?
Welcher player spielt Musik ab?
Ist dein Player asyncron fähig?
Kerne: Weiß ich nicht, deshalb habe ich das Model angegeben.
Player: Songs for Arduino - Dragão sem Chama wollte ich einen hiervon nehmen und reincoden.
ducos1a:
uintDiff ducos1a(String lastblockhash, String newblockhash,
uintDiff difficulty) {
newblockhash.toUpperCase();
const char *c = newblockhash.c_str();
uint8_t final_len = newblockhash.length() >> 1;
for (uint8_t i = 0, j = 0; j < final_len; i += 2, j++)
job[j] = ((((c[i] & 0x1F) + 9) % 25) << 4) + ((c[i + 1] & 0x1F) + 9) % 25;
// Difficulty loop
#if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_MEGAAVR)
// If the difficulty is too high for AVR architecture then return 0
if (difficulty > 655) return 0;
#endif
Sha1_base.init();
Sha1_base.print(lastblockhash);
for (uintDiff ducos1res = 0; ducos1res < difficulty * 100 + 1; ducos1res++) {
Sha1 = Sha1_base;
Sha1.print(String(ducos1res));
// Get SHA1 result
uint8_t *hash_bytes = Sha1.result();
if (memcmp(hash_bytes, job, SHA1_HASH_LEN * sizeof(char)) == 0) {
// If expected hash is equal to the found hash, return the result
return ducos1res;
}
}
return 0;
}
Falls noch mehr Code notwendig ist: Es handelt sich um den offiziellen Duinocoin-miner.