<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://fixme.ch/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Greg</id>
		<title>Fixme.ch - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://fixme.ch/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Greg"/>
		<link rel="alternate" type="text/html" href="https://fixme.ch/wiki/Special:Contributions/Greg"/>
		<updated>2026-08-22T02:18:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5018</id>
		<title>Split-flap display</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5018"/>
				<updated>2013-11-22T22:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Greg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Someone donated three flip flop to fixme, it would be good to make them work and display whatever we would like to.&lt;br /&gt;
&lt;br /&gt;
== Circuit board == &lt;br /&gt;
&lt;br /&gt;
=== Controller === &lt;br /&gt;
8 bit micro&lt;br /&gt;
Full datasheet : [[File:MC68HC705P6A-7151.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== T bridge ===&lt;br /&gt;
basically switch the power&lt;br /&gt;
Full datasheet : [[File:DSA-60676.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Manual driving ==&lt;br /&gt;
&lt;br /&gt;
=== Principle ===&lt;br /&gt;
&lt;br /&gt;
The stepper-motors can be driven directly by an Arduino powering the coils properly. The Arduino output is low-power so the motor needs to be driven in &amp;quot;high-torque&amp;quot; mode, ie. 2 coils at a time. That is to say, instead of having the magnetic field going N &amp;gt; E &amp;gt; S &amp;gt; W, it goes NE &amp;gt; SE &amp;gt; SW &amp;gt; NW.&lt;br /&gt;
&lt;br /&gt;
To lower the electrical stress on the Arduino, it would be '''great''' to drive the motors with H-Bridges (or maybe T-bridge like in the original design).&lt;br /&gt;
&lt;br /&gt;
=== Show me the code ===&lt;br /&gt;
&lt;br /&gt;
The code is there (not pushed to any GIT):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;  // Roue des minutes :&lt;br /&gt;
  //   Engrenage moteur avec 4 aimants, capteur à effet Hall sur la PCB a la verticale&lt;br /&gt;
  //   Il faut compter 79 passages pour faire un tour de flaps. Vérifier s'il y a une dérive.&lt;br /&gt;
  //   Conclusion pour afficher le bon nombre : mapper 79*4 pas sur 62 positions (00-&amp;gt;60 + blancs)&lt;br /&gt;
  &lt;br /&gt;
  // Tempo du moteur pas à pas&lt;br /&gt;
  #define tempo 14&lt;br /&gt;
  &lt;br /&gt;
  #define SEC 10&lt;br /&gt;
  #define MIN 6&lt;br /&gt;
  #define HOR 2&lt;br /&gt;
  &lt;br /&gt;
  unsigned int h = 0, m = 0, s = 0;&lt;br /&gt;
  unsigned int hM = 0, mM = 0, sM = 0;&lt;br /&gt;
  &lt;br /&gt;
  void setup() {&lt;br /&gt;
    // Define outputs&lt;br /&gt;
    for(int i=0; i&amp;lt;12; i++)&lt;br /&gt;
      pinMode(i+1, OUTPUT);&lt;br /&gt;
    Serial.begin(9600);&lt;br /&gt;
    Serial.setTimeout(30*1000);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  void rot(unsigned char hms, unsigned int target)&lt;br /&gt;
  {&lt;br /&gt;
    // Demande invalide&lt;br /&gt;
    if((hms != SEC &amp;amp;&amp;amp; hms != MIN &amp;amp;&amp;amp; hms != HOR) || target &amp;gt; 60)&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;Incorrect !&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Flap 00 &amp;gt; 29 : numéros&lt;br /&gt;
    // Flap 30      : blanc&lt;br /&gt;
    // Flap 31 &amp;gt; 60 : numéros-1&lt;br /&gt;
    // Flap 61      : blanc&lt;br /&gt;
  &lt;br /&gt;
    // Position actuelle&lt;br /&gt;
    unsigned int* current;&lt;br /&gt;
         if(hms == SEC) current = &amp;amp;s;&lt;br /&gt;
    else if(hms == MIN) current = &amp;amp;m;&lt;br /&gt;
    else                current = &amp;amp;h;&lt;br /&gt;
    &lt;br /&gt;
    Serial.print(&amp;quot;Position actuelle : &amp;quot;);&lt;br /&gt;
    Serial.println(*current);&lt;br /&gt;
    Serial.print(&amp;quot;Target : &amp;quot;);&lt;br /&gt;
    Serial.println(target);&lt;br /&gt;
  &lt;br /&gt;
    // Action !&lt;br /&gt;
    // On flip les flaps tant qu'on est pas arrivé à destination&lt;br /&gt;
    Serial.print(&amp;quot;Action sur les pins &amp;quot;);&lt;br /&gt;
    Serial.print(hms+3);&lt;br /&gt;
    Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
    Serial.print(hms+2);&lt;br /&gt;
    Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
    Serial.print(hms+1);&lt;br /&gt;
    Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
    Serial.println(hms);&lt;br /&gt;
    &lt;br /&gt;
    while(*current != target)&lt;br /&gt;
    {&lt;br /&gt;
      Serial.print(&amp;quot;Position actuelle : &amp;quot;);&lt;br /&gt;
      int lol = *current;&lt;br /&gt;
      Serial.println(lol);&lt;br /&gt;
      &lt;br /&gt;
      for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
      {&lt;br /&gt;
        // Step 5&lt;br /&gt;
        digitalWrite(hms+3, LOW);&lt;br /&gt;
        digitalWrite(hms+2, HIGH);&lt;br /&gt;
        digitalWrite(hms+1, LOW);&lt;br /&gt;
        digitalWrite(hms, HIGH);&lt;br /&gt;
        delay(tempo);&lt;br /&gt;
      &lt;br /&gt;
        // Step 7&lt;br /&gt;
        digitalWrite(hms+3, HIGH);&lt;br /&gt;
        digitalWrite(hms+2, LOW);&lt;br /&gt;
        digitalWrite(hms+1, LOW);&lt;br /&gt;
        digitalWrite(hms, HIGH);&lt;br /&gt;
        delay(tempo);&lt;br /&gt;
  &lt;br /&gt;
        // Step 1&lt;br /&gt;
        digitalWrite(hms+3, HIGH);&lt;br /&gt;
        digitalWrite(hms+2, LOW);&lt;br /&gt;
        digitalWrite(hms+1, HIGH);&lt;br /&gt;
        digitalWrite(hms, LOW);&lt;br /&gt;
        delay(tempo);&lt;br /&gt;
  &lt;br /&gt;
        // Step 3    &lt;br /&gt;
        digitalWrite(hms+3, LOW);&lt;br /&gt;
        digitalWrite(hms+2, HIGH);&lt;br /&gt;
        digitalWrite(hms+1, HIGH);&lt;br /&gt;
        digitalWrite(hms, LOW);&lt;br /&gt;
        delay(tempo);&lt;br /&gt;
      }&lt;br /&gt;
  &lt;br /&gt;
      // Demi-step pour faire tomber le flap, mais pas 2&lt;br /&gt;
      digitalWrite(hms+3, LOW);&lt;br /&gt;
      digitalWrite(hms+2, HIGH);&lt;br /&gt;
      digitalWrite(hms+1, LOW);&lt;br /&gt;
      digitalWrite(hms, LOW);&lt;br /&gt;
      delay(tempo*2);&lt;br /&gt;
  &lt;br /&gt;
      (*current)++;&lt;br /&gt;
      if(*current &amp;gt;= 61)&lt;br /&gt;
        *current = 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Stop motor&lt;br /&gt;
    digitalWrite(hms+3, LOW);&lt;br /&gt;
    digitalWrite(hms+2, LOW);&lt;br /&gt;
    digitalWrite(hms+1, LOW);&lt;br /&gt;
    digitalWrite(hms, LOW);&lt;br /&gt;
    &lt;br /&gt;
    Serial.println(&amp;quot;Done&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  void loop() {&lt;br /&gt;
    if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
      unsigned char b = Serial.read();&lt;br /&gt;
      if(b == 'h' || b == 'm' || b == 's')&lt;br /&gt;
      {&lt;br /&gt;
        int roue;&lt;br /&gt;
        if(b == 'h') roue = HOR;&lt;br /&gt;
        else if(b = 'm') roue = MIN;&lt;br /&gt;
        else roue = SEC;&lt;br /&gt;
        Serial.print(&amp;quot;Roue selectionnee : &amp;quot;);&lt;br /&gt;
        Serial.println(roue);&lt;br /&gt;
        int nb = Serial.parseInt();&lt;br /&gt;
        Serial.println(nb);&lt;br /&gt;
        rot(roue,nb);&lt;br /&gt;
      }&lt;br /&gt;
      else if(b == 'w')&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println(&amp;quot;Give me 3 values !&amp;quot;);&lt;br /&gt;
        h = Serial.parseInt();&lt;br /&gt;
        m = Serial.parseInt();&lt;br /&gt;
        s = Serial.parseInt();&lt;br /&gt;
      }&lt;br /&gt;
      else if(b == '+')&lt;br /&gt;
      {&lt;br /&gt;
        rot(MIN,m+1);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Greg</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5017</id>
		<title>Split-flap display</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5017"/>
				<updated>2013-11-22T22:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;Greg: Added code and doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Someone donated three flip flop to fixme, it would be good to make them work and display whatever we would like to.&lt;br /&gt;
&lt;br /&gt;
== Circuit board == &lt;br /&gt;
&lt;br /&gt;
=== Controller === &lt;br /&gt;
8 bit micro&lt;br /&gt;
Full datasheet : [[File:MC68HC705P6A-7151.pdf]]&lt;br /&gt;
&lt;br /&gt;
=== T bridge ===&lt;br /&gt;
basically switch the power&lt;br /&gt;
Full datasheet : [[File:DSA-60676.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Manual driving ==&lt;br /&gt;
&lt;br /&gt;
=== Principle ===&lt;br /&gt;
&lt;br /&gt;
The stepper-motors can be driven directly by an Arduino powering the coils properly. The Arduino output is low-power so the motor needs to be driven in &amp;quot;high-torque&amp;quot; mode, ie. 2 coils at a time. That is to say, instead of having the magnetic field going N &amp;gt; E &amp;gt; S &amp;gt; W, it goes NE &amp;gt; SE &amp;gt; SW &amp;gt; NW.&lt;br /&gt;
&lt;br /&gt;
To lower the electrical stress on the Arduino, it would be '''great''' to drive the motors with H-Bridges (or maybe T-bridge like in the original design).&lt;br /&gt;
&lt;br /&gt;
=== Show me the code ===&lt;br /&gt;
&lt;br /&gt;
The code is there (not pushed to any GIT):&lt;br /&gt;
&lt;br /&gt;
// Roue des minutes :&lt;br /&gt;
//   Engrenage moteur avec 4 aimants, capteur à effet Hall sur la PCB a la verticale&lt;br /&gt;
//   Il faut compter 79 passages pour faire un tour de flaps. Vérifier s'il y a une dérive.&lt;br /&gt;
//   Conclusion pour afficher le bon nombre : mapper 79*4 pas sur 62 positions (00-&amp;gt;60 + blancs)&lt;br /&gt;
&lt;br /&gt;
// Tempo du moteur pas à pas&lt;br /&gt;
#define tempo 14&lt;br /&gt;
&lt;br /&gt;
#define SEC 10&lt;br /&gt;
#define MIN 6&lt;br /&gt;
#define HOR 2&lt;br /&gt;
&lt;br /&gt;
unsigned int h = 0, m = 0, s = 0;&lt;br /&gt;
unsigned int hM = 0, mM = 0, sM = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Define outputs&lt;br /&gt;
  for(int i=0; i&amp;lt;12; i++)&lt;br /&gt;
    pinMode(i+1, OUTPUT);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.setTimeout(30*1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void rot(unsigned char hms, unsigned int target)&lt;br /&gt;
{&lt;br /&gt;
  // Demande invalide&lt;br /&gt;
  if((hms != SEC &amp;amp;&amp;amp; hms != MIN &amp;amp;&amp;amp; hms != HOR) || target &amp;gt; 60)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(&amp;quot;Incorrect !&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // Flap 00 &amp;gt; 29 : numéros&lt;br /&gt;
  // Flap 30      : blanc&lt;br /&gt;
  // Flap 31 &amp;gt; 60 : numéros-1&lt;br /&gt;
  // Flap 61      : blanc&lt;br /&gt;
&lt;br /&gt;
  // Position actuelle&lt;br /&gt;
  unsigned int* current;&lt;br /&gt;
       if(hms == SEC) current = &amp;amp;s;&lt;br /&gt;
  else if(hms == MIN) current = &amp;amp;m;&lt;br /&gt;
  else                current = &amp;amp;h;&lt;br /&gt;
  &lt;br /&gt;
  Serial.print(&amp;quot;Position actuelle : &amp;quot;);&lt;br /&gt;
  Serial.println(*current);&lt;br /&gt;
  Serial.print(&amp;quot;Target : &amp;quot;);&lt;br /&gt;
  Serial.println(target);&lt;br /&gt;
&lt;br /&gt;
  // Action !&lt;br /&gt;
  // On flip les flaps tant qu'on est pas arrivé à destination&lt;br /&gt;
  Serial.print(&amp;quot;Action sur les pins &amp;quot;);&lt;br /&gt;
  Serial.print(hms+3);&lt;br /&gt;
  Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
  Serial.print(hms+2);&lt;br /&gt;
  Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
  Serial.print(hms+1);&lt;br /&gt;
  Serial.print(&amp;quot;, &amp;quot;);&lt;br /&gt;
  Serial.println(hms);&lt;br /&gt;
  &lt;br /&gt;
  while(*current != target)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.print(&amp;quot;Position actuelle : &amp;quot;);&lt;br /&gt;
    int lol = *current;&lt;br /&gt;
    Serial.println(lol);&lt;br /&gt;
    &lt;br /&gt;
    for(int i = 0; i&amp;lt;4; i++)&lt;br /&gt;
    {&lt;br /&gt;
      // Step 5&lt;br /&gt;
      digitalWrite(hms+3, LOW);&lt;br /&gt;
      digitalWrite(hms+2, HIGH);&lt;br /&gt;
      digitalWrite(hms+1, LOW);&lt;br /&gt;
      digitalWrite(hms, HIGH);&lt;br /&gt;
      delay(tempo);&lt;br /&gt;
    &lt;br /&gt;
      // Step 7&lt;br /&gt;
      digitalWrite(hms+3, HIGH);&lt;br /&gt;
      digitalWrite(hms+2, LOW);&lt;br /&gt;
      digitalWrite(hms+1, LOW);&lt;br /&gt;
      digitalWrite(hms, HIGH);&lt;br /&gt;
      delay(tempo);&lt;br /&gt;
&lt;br /&gt;
      // Step 1&lt;br /&gt;
      digitalWrite(hms+3, HIGH);&lt;br /&gt;
      digitalWrite(hms+2, LOW);&lt;br /&gt;
      digitalWrite(hms+1, HIGH);&lt;br /&gt;
      digitalWrite(hms, LOW);&lt;br /&gt;
      delay(tempo);&lt;br /&gt;
&lt;br /&gt;
      // Step 3    &lt;br /&gt;
      digitalWrite(hms+3, LOW);&lt;br /&gt;
      digitalWrite(hms+2, HIGH);&lt;br /&gt;
      digitalWrite(hms+1, HIGH);&lt;br /&gt;
      digitalWrite(hms, LOW);&lt;br /&gt;
      delay(tempo);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Demi-step pour faire tomber le flap, mais pas 2&lt;br /&gt;
    digitalWrite(hms+3, LOW);&lt;br /&gt;
    digitalWrite(hms+2, HIGH);&lt;br /&gt;
    digitalWrite(hms+1, LOW);&lt;br /&gt;
    digitalWrite(hms, LOW);&lt;br /&gt;
    delay(tempo*2);&lt;br /&gt;
&lt;br /&gt;
    (*current)++;&lt;br /&gt;
    if(*current &amp;gt;= 61)&lt;br /&gt;
      *current = 0;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // Stop motor&lt;br /&gt;
  digitalWrite(hms+3, LOW);&lt;br /&gt;
  digitalWrite(hms+2, LOW);&lt;br /&gt;
  digitalWrite(hms+1, LOW);&lt;br /&gt;
  digitalWrite(hms, LOW);&lt;br /&gt;
  &lt;br /&gt;
  Serial.println(&amp;quot;Done&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (Serial.available() &amp;gt; 0) {&lt;br /&gt;
    unsigned char b = Serial.read();&lt;br /&gt;
    if(b == 'h' || b == 'm' || b == 's')&lt;br /&gt;
    {&lt;br /&gt;
      int roue;&lt;br /&gt;
      if(b == 'h') roue = HOR;&lt;br /&gt;
      else if(b = 'm') roue = MIN;&lt;br /&gt;
      else roue = SEC;&lt;br /&gt;
      Serial.print(&amp;quot;Roue selectionnee : &amp;quot;);&lt;br /&gt;
      Serial.println(roue);&lt;br /&gt;
      int nb = Serial.parseInt();&lt;br /&gt;
      Serial.println(nb);&lt;br /&gt;
      rot(roue,nb);&lt;br /&gt;
    }&lt;br /&gt;
    else if(b == 'w')&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(&amp;quot;Give me 3 values !&amp;quot;);&lt;br /&gt;
      h = Serial.parseInt();&lt;br /&gt;
      m = Serial.parseInt();&lt;br /&gt;
      s = Serial.parseInt();&lt;br /&gt;
    }&lt;br /&gt;
    else if(b == '+')&lt;br /&gt;
    {&lt;br /&gt;
      rot(MIN,m+1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Greg</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5015</id>
		<title>Split-flap display</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Split-flap_display&amp;diff=5015"/>
				<updated>2013-11-22T22:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Greg: moved Flip flop to Split-flap display: Corrigé le nom de l'appareil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Someone donated three flip flop to fixme, it would be good to make them work and display whatever we would like to.&lt;br /&gt;
&lt;br /&gt;
== circuit board == &lt;br /&gt;
=== Controller === &lt;br /&gt;
8 bit micro&lt;br /&gt;
Full datasheet : [[File:MC68HC705P6A-7151.pdf]]&lt;br /&gt;
=== T bridge ===&lt;br /&gt;
basically switch the power&lt;br /&gt;
Full datasheet : [[File:DSA-60676.pdf]]&lt;/div&gt;</summary>
		<author><name>Greg</name></author>	</entry>

	<entry>
		<id>https://fixme.ch/w/index.php?title=Flip_flop&amp;diff=5016</id>
		<title>Flip flop</title>
		<link rel="alternate" type="text/html" href="https://fixme.ch/w/index.php?title=Flip_flop&amp;diff=5016"/>
				<updated>2013-11-22T22:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Greg: moved Flip flop to Split-flap display: Corrigé le nom de l'appareil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Split-flap display]]&lt;/div&gt;</summary>
		<author><name>Greg</name></author>	</entry>

	</feed>