Hallo,
Om kennis te maken met communicatie tussen een arduino en de raspberry pi heb ik het volgende in gedachten:
De raspberry berekent priem getallen. Wanneer deze gevonden is wordt die doorgegeven aan de Raspberry pi en deze dumpt het in een text file. Nu vroeg ik me af hoe groot kan de arduino rekenen? Het is een 8 bit processor maar door gebruik te maken van de Arduino omgeving kun je volgens mij meer regesters reserveren (int, long int etc.). Ik kwam het volgende tegen op internet:
// Range LONG_LONG_MIN: -9223372036854775808
// Range LONG_LONG_MAX: 9223372036854775807
// Range ULONG_LONG_MAX: 18446744073709551615
// IMPORTANT NOTE - Assigning values requires suffix 'LL' for signed values and 'ULL' for unsigned values
long long n_max = 9223372036854775807LL;
long long n_min = -9223372036854775808LL;
unsigned long long n_umax = 18446744073709551615ULL;
Hieruit blijkt dat de unsinged long long de grootste is maar deze kom ik niet tegen op de reference pagina: https://www.arduino.cc/en/Reference/HomePage
Klopt het van de unsigned int?
Alvast bedankt.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
uint64_t om precies te zijn. Daarvoor moet je de stdint.h headerfile includen.
verder zit in die file ook de INT64_MAX.
Ikweet niet of de compiler wel 64 bits op een arduino ondersteund, want het hoeft er officieel niet in te zitten.
Een Uno heft 2K geheugen, dus in theorie passen er twee getallen van 8192 bits in een uno. Met 8192 bits kun je ongeveer tot 10819 tellen, dus dat zou dan je maximum zijn 
Maar dan moet je wel heel lang wachten..
Een beetje efficiente priem-getallen search test voor kandidaat-priemgetal n alle priemgetallen kleiner dan √n.
Omdat een Uno 2K geheugen heeft kun je dus 1000 (16 bits) priemgetallen opslaan. Het 1000ste priemgetal is 7919, dus je kunt getallen tot 62710561 controleren.
Als je grotere getallen wil controleren, dan zul je alle mogelijke deeltallen groter dan 7919 opnieuw moeten berekenen. Dat wordt heel traag 
Conclusie: Je gaat met een Uno nooit priemgetallen vinden groter dan een unsigned long (4294967295)
Hoi bedankt voor alle info. Ik ga de priemgetallen niet in de Uno opslaan. Wanneer er een priemgetal gevonden is dan verstuurd hij deze naar mijn raspberry (moet ik nog maken). De code voor het vinden van de priemgetallen tot nu toe:
//Decleration of the variables
long int counter = 2;
long int ``111111111111111111i = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
counter++; //Add 1 to the counter
bool FalsePrime = false;
int LastNumberCounter = counter%10;
if((LastNumberCounter % 2) != 0){
//Check if the number is a prime number
for (i = 2; i < counter; i++) {
if( (counter%i)==0){
FalsePrime = true;
break;
}
else
{
FalsePrime = false;
}
}
if(FalsePrime == false)
{
Serial.println(counter);
}
}
}Het is een trage code maar dat geeft niet. Het gaat mij meer om de communicatie tussen de arduino en raspberry pi. Het leek me wel leuk om de berekende priemgetallen op me website toe te voegen. Ik loop nu tegen het probleem aan dat de Serial.Print geen getallen van uint64_t kan verzenden. Kan dit bij I^2C bus ook problemen opleveren?
Ik loop nu tegen het probleem aan dat de Serial.Print geen getallen van uint64_t kan verzenden
Wat als je ze als een string verstuurd of zeg ik nu iets doms ?
Op 1 maart 2016 09:42:06 schreef BJ2:
Het is een trage code maar dat geeft niet.....
Ik loop nu tegen het probleem aan dat de Serial.Print geen getallen van uint64_t kan verzenden.
Gewoon long (int32_t) gebruiken. Tegen de tijd dat je arduino bij de hoogste waarde is is je erfenis al drie keer verkwanseld 
Het converteren naar een string werkte niet. Volgens mij kan de Arduino IDE niet goed omgaan met de uint64_t.
Haha welke erfenis
?
Op 1 maart 2016 09:42:06 schreef BJ2:
Ik loop nu tegen het probleem aan dat de Serial.Print geen getallen van uint64_t kan verzenden.
En als je geen stringconversie in je library hebt, dan doe je het zelf. De code om van een integer (hoe lang of kort ook) een string te maken is niet overdreven ingewikkeld.
