Re: Троичные часы

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

ТРОИЧНЫЕ ЧАСЫ

Post by cr0acker »

Предлагаю для начала сделать модуль тринарных часов с линейкой двухцветных светодиодов
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:Предлагаю для начала сделать модуль тринарных часов с линейкой двухцветных светодиодов
Мы тут тоже подумали про троичные часы с линейкой двухцветных светодиодов - но только созданные на честном троичном подходе! :rotate:
Last edited by Shaos on 21 Sep 2012 10:25, edited 2 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote: Мы тут тоже подумали про троичные часы с линейкой двухцветных светодиодов - но только созданные на честном троичном подходе! :rotate:
За основу можно взять 2-х цветные красно-зеленые светодиоды - когда ток идет в одну сторону, то светодиод горит красным, когда в другую - зеленым. Зеленый цвет можно поставить в соответствие троичной цифре P, красный - N, а погасший светодиод будет обозначать O. Предлагается сделать индикаторы часов и минут по 4 светодиода в ряд. Часы будут отображаться троичными числами от 0 до 23 (OOOO...PONN), а минуты - от -30 до +29 (NONO...POPN - т.е. часы будут показвать, например, "полвторого" вместо "час тридцать" ; ). Управлять часами предполагается с помощью трех кнопок - уменьшение и увеличение счетчика минут и увеличение счетчика часов.

Спасибо Мак Бастеру за идейную поддержку! :dj:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот апплет, демонстрирующий идею таких часов:

<applet code="TriClock.class" width=200 height=150 alt="TriClock Java Applet"></applet>

Время которое они показывают можно посмотреть в строке статуса браузера :rotate:

Code: Select all

// TriClock.java - Alexander Shabarshin  14.03.2005-15.03.2005

import java.applet.*;
import java.util.*;
import java.awt.*;

public class TriClock extends Applet implements Runnable
{
 Thread thread = null;
 Date data = null;
 int[] time;

 public void init()
 {
   setBackground(new Color(255,255,255));
   time = new int[3];
 }
   
 public void paint(Graphics g)
 {
   int i,j,k,n,m,x,y;
   int dx = size().width;
   int dy = size().height;
   int st = dx/9;
   time[0] = data.getHours();
   time[1] = data.getMinutes();
   time[2] = data.getSeconds();
   if(time[2]>=30){time[2]-=60;time[1]++;}
   if(time[1]>=30){time[1]-=60;time[0]++;}
   if(time[0]>=24){time[0]-=24;}
   showStatus("Time="+time[0]+":"+time[1]+":"+time[2]);
   for(j=0;j<3;j++)
   {
     k = 27;
     for(i=0;i<4;i++)
     {
       n = time[j]/k;
       time[j] -= n*k;
       m = k/2;
       if(time[j]>+m){n++;time[j]-=k;}
       if(time[j]<-m){n--;time[j]+=k;}
       switch(n)
       {
         case -1: g.setColor(new Color(0xFF,0x00,0x00)); break;
         case  0: g.setColor(new Color(0xFF,0xFF,0xFF)); break;
         case  1: g.setColor(new Color(0x00,0xFF,0x00)); break;
       }   
       x = st + i*st*2;
       y = st + j*st*2;
       g.fillOval(x,y,st,st);
       g.setColor(new Color(0,0,0));
       g.drawOval(x,y,st,st);
       k /= 3;
     }
   }
 }

 public void update(Graphics g)
 {
   paint(g);
 }

 public void run()
 {
   while(true)
   {
      try {
        data = new Date();
        repaint();
        thread.sleep(250);
      } catch(Exception e) {
        System.out.println("Exception "+e);
      }    
   }
 }

 public void start()
 {
   if(thread==null)
   {
      thread = new Thread(this);
      thread.start();
   } 
 }

 public void stop()
 {
   if(thread!=null)
   {
      thread.stop();
      thread = null;
   }
 }

}
Над алгоритмом преобразования числа в троичный сбалансированный вид бился больше часа ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:За основу можно взять 2-х цветные красно-зеленые светодиоды - когда ток идет в одну сторону, то светодиод горит красным, когда в другую - зеленым. Зеленый цвет можно поставить в соответствие троичной цифре P, красный - N, а погасший светодиод будет обозначать O. Предлагается сделать индикаторы часов и минут по 4 светодиода в ряд. Часы будут отображаться троичными числами от 0 до 23 (OOOO...PONN), а минуты - от -30 до +29 (NONO...POPN - т.е. часы будут показвать, например, "полвторого" вместо "час тридцать" ; ). Управлять часами предполагается с помощью трех кнопок - уменьшение и увеличение счетчика минут и увеличение счетчика часов.
Итак, примерно прикинул схему. Одноминутный задающий генератор пока видится либо на 555 микрухе (с погрешностью, т.к. RC), либо на кварце 32 кГц, но в этом случае придется ставить делитель на двоичных счетчиках (нетроичный).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Итак, примерно прикинул схему. Одноминутный задающий генератор пока видится либо на 555 микрухе (с погрешностью, т.к. RC), либо на кварце 32 кГц, но в этом случае придется ставить делитель на двоичных счетчиках (нетроичный).
Сегодня пришла в голову идея сделать задающий генератор на 8-ногом пике PIC12C508, который тут можно за 1.5 бакса заказать! С внутренним кварцем на 4 МГц на нем легко программку заделать, которая будет выдавать 1 минутные импульсы без какой-бы то ни было обвязки!
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Ronin
Maniac
Posts: 304
Joined: 29 Mar 2005 06:06
Location: Krasnodar

Post by Ronin »

Shaos wrote:Сегодня пришла в голову идея сделать задающий генератор на 8-ногом пике PIC12C508, который тут можно за 1.5 бакса заказать! С внутренним кварцем на 4 МГц на нем легко программку заделать, которая будет выдавать 1 минутные импульсы без какой-бы то ни было обвязки!
да 555й хватит...

гы, а у нас, черт знает где от Москвы :) полноценный ат89с2051 стоит 50р (оптом дешевле) на радиорынке ;) те же 1.5 бакса практически.
User avatar
Ronin
Maniac
Posts: 304
Joined: 29 Mar 2005 06:06
Location: Krasnodar

Post by Ronin »

Shaos wrote:time[0] = data.getHours();
time[1] = data.getMinutes();
time[2] = data.getSeconds();
гыгы, счетчики у тебя нечестные, нетроичные ;)
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Ronin wrote:гыгы, счетчики у тебя нечестные, нетроичные ;)
Это не сложно исправить. При запуске берем текущее время, загоняем в уравновешенную троичную форму, а там на каждой секунде делаем элементарное приращение, по модулю :)
Extreme Entertainment
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Ronin wrote:
Shaos wrote:Сегодня пришла в голову идея сделать задающий генератор на 8-ногом пике PIC12C508, который тут можно за 1.5 бакса заказать! С внутренним кварцем на 4 МГц на нем легко программку заделать, которая будет выдавать 1 минутные импульсы без какой-бы то ни было обвязки!
да 555й хватит...

гы, а у нас, черт знает где от Москвы :) полноценный ат89с2051 стоит 50р (оптом дешевле) на радиорынке ;) те же 1.5 бакса практически.
У оригально 555 максимальная частота 1,5 МГЦ.
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Mac Buster wrote:
Ronin wrote:гыгы, счетчики у тебя нечестные, нетроичные ;)
Это не сложно исправить. При запуске берем текущее время, загоняем в уравновешенную троичную форму, а там на каждой секунде делаем элементарное приращение, по модулю :)
Да ладно - это тока апплет, который должен был дать визуальное представление о таких часах :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Счетчики можно сделать из троичных полусумматоров (см. viewtopic.php?t=53) - по одному на трит
Last edited by Shaos on 21 Sep 2012 10:27, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:За основу можно взять 2-х цветные красно-зеленые светодиоды - когда ток идет в одну сторону, то светодиод горит красным, когда в другую - зеленым. Зеленый цвет можно поставить в соответствие троичной цифре P, красный - N, а погасший светодиод будет обозначать O.
Наверное идеологически правильнее все-таки на P повесить красный цвет, а на N - зеленый (за неимением синего), т.к. общепринятая расцветка проводов к примеру - черный - земля, красный - плюс, синий - минус.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:За основу можно взять 2-х цветные красно-зеленые светодиоды - когда ток идет в одну сторону, то светодиод горит красным, когда в другую - зеленым. Зеленый цвет можно поставить в соответствие троичной цифре P, красный - N, а погасший светодиод будет обозначать O.
Наверное идеологически правильнее все-таки на P повесить красный цвет, а на N - зеленый (за неимением синего), т.к. общепринятая расцветка проводов к примеру - черный - земля, красный - плюс, синий - минус.
Хотя если вспомнить к примеру расцветки биржевых котировок, то там зеленый - это положительное движение, а красное - отрицательное.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Shaos wrote:Хотя если вспомнить к примеру расцветки биржевых котировок, то там зеленый - это положительное движение, а красное - отрицательное.
Думаю логичнее сделать красный для отрицательного, т.к. у нас отрицательные значения лежат на числовой прямой слева относительно положительных. Так что можно использовать шкалу длин волн (КОЖЗГСФ), где красный (К) расположен левее зеленого (З) :D Поняли что-нибудь ? :wink:
Extreme Entertainment