Juiste volgorde detecteren

Ha fijne hollanders

Ik was benieuwd naar jullie input voor een puzzle project dat we met arduino aan het realiseren zijn.

Ik probeer het zo simpel mogelijk uit te leggen.
In deze specifieke puzzle vind men 6 kistjes die ze in de juiste volgorde op een tafel moeten plaatsen. Zodra ze in de juiste volgorde staan moet de arduino hierop reageren. Zolang ze niet in de juiste volgorde staan, moet de arduino zich dus koest houden.

in de tafel loopt een draad die door alle kistjes loopt wanneer ze op de tafel gezet zijn (de kistjes vallen in een verzinking waarbij het circuit compleet wordt gemaakt)

Ik hoop dat ik mijzelf een beetje duidelijk heb kunnen maken. Wat kan ik het beste in de kistjes stoppen zodat de arduino 'ziet' in welke volgorde ze staan?

in elke doos stop je een weerstand van verschillende waarde. Het geheel vormt een grote voltage divider waarbij de Arduino de spanning meet op de 5 tussenpunten .

Als de weerstanden in de juiste volgorde liggen dan zullen de analogRead() ongeveer overeenkomen met waarden die in een tabel staan

Meet iedere poort meerdere keren en reken het gemiddelde uit om ruis te vermijden.

in dummy code

void loop()
{
  for (int pin = 0; pin<5; pin++)
  {
    int sum[pin] = 0;
    for (int j = 0; j< 4; j++) sum[pin] += analogRead(pin);
    sum[pin] /= 4;
  }

  bool OK = true;
  for (int i=0; i<5; i++)
  {
    OK = OK && (lower[i] < sum[i] && sum[i] < upper[i]);
  }
  if (OK) => succes
}
you should get the idea ...

zoals rob voorstelt is wel goed natuurlijk want niemand kan de weerstanden zien, dat betekent wel dat de arduino moet draaien werken.

je hebt 6 analoge ingangen op een arduino, dus ik zou bijna zeggen maak in elk kistje een spanningsdeler, dan kun je precies zien welk kistje waar is. en dan kun je ook met ledjes bijv aangeven welke goed staat en welke niet 2 kleuren leds.
voordeel is de eenvoud
andere manieren zijn draadjes in de plaat en doorverbinden in de kistjes op andere plaatsen,
magneet en reedswitches
kleurenherkenning
barcode en een draaiende scanner.
maak het op een ronde tafel dan is de puzzel telkens anders.

omdat het er 6 zijn kun je ook dobbelstenen gebruiken, lekker lastig maken.
je kunt dan zelfs door de arduino toevalsgetallen maken enzovoorts.
wordt wel gepriegel in de stenen want daar moeten dan best veel weerstanden in komen.

Misschien werkt deze oplossing (zonder weerstanden) ook voor je: elk blokje heeft twee maal zes pinnetjes onder zich; elk blokje verbindt precies twee van die pinnetjes met elkaar; bijv pin #1 links aan pin #3 aan de rechterkant van 't blokje. Op de tafel worden alle pinnen aan de rechterkant van 'n blokje doorverbonden aan de pinnen aan de linkerkant van 't volgend blokje.

Heb je blokjes in de juiste volgorde geplaats dan maakt 't betreffende pinnetje aan de linkerkant van 't meest linker blokje contact met 't betreffende pinnetje aan de de rechterkant van 't meest rechtse blokje.

bijvoorbeeld: [1 - 3 [3 - 2] [2 - 5] [5 - 6] [6 - 4] [4 - 3], waarbij [a - b] betekent dat pinnetje a aan pinnetje b is doorverbonden in 'n blokje. Er wordt gemeten aan pinnetje #1 (geheel links) en pinnetje #3 (geheel rechts) in 't voorbeeldje.

vriendelijke groet,

Jos

Als je geen pinnetjes wilt gebruiken kan je ook magneten in de doos steken en hall effect sensors onder de tafel.
Elke doos zijn magneet locatie en haleffect sensor op de juiste plaats.
Klaar is kees.
Jantje