Контролери > Ардуино (Arduino)

10bit-ов брояч?

(1/3) > >>

kalos:
Здравейте,
имам нужда от помощ.
Какъв е най-добрия начин за десетичен 10-битов брояч т.е. имам 10 светодиода на дигиталните изходи (4-13), брояча да започне от 0 и да добавя през 1 сек. по една еденица. Като моментното чсило да се "изписва" чрез светодиодите.
Подобно на това http://www.youtube.com/watch?v=t3Ol3Dxxl0s
но без но без 74HC595

Малко съм разсеян в момента, дано да стане ясно какъв им е въпроса.
Поздрави :)

tommyboy:
а защо без 74HC595

zen:
Ето ти кода. Имай предвид, че не съм го тествал. По късно ще го тествам и евентуално коригирам.


--- Код: ---
 long decimal;  
 char binary[80];
 
 
void setup() {                
   Serial.begin(9600);
   decimal = 0;
   
   for(int br = 4;br<14;br++)
   {
    pinMode(br, OUTPUT);  
   
   }
 
}

void loop() {
decimal++;
if(decimal==1024)
{  
decimal = 0;
}

   
dec2bin(decimal,binary);

for(int br = 4;br<14;br++)
{
  if(binary[br-4] == 1)
  {
    digitalWrite(br, HIGH);    
  }
  else
  {
     digitalWrite(br, LOW);    
  }
   
}


Serial.print("Dec:");Serial.println(decimal);
Serial.print("Bin:");Serial.println(binary);
Serial.println(" ");

delay(1000);
 
}


void dec2bin(long decimal, char *binary)
{  
int  k = 0, n = 0;  
 
int  remain;  
char temp[80];  

do  
{
remain    = decimal % 2;    
decimal   = decimal / 2;  
temp[k++] = remain + '0';  
}
while (decimal > 0);  

while (k >= 0)
    binary[n++] = temp[--k];
   binary[n-1] = 0;        
}

--- Край на кода ---

kalos:
Тествах това което си написал, брояча работи и подава данните към сериния порт, но не се отразява на светодиодите.
tommyboy - в момента нямам налични, а програмата ми е да тествам една схема.
По-точно имам една охранителна ролетка с дистанционно (ето интегралната схема на дистацнионното http://www.honsitak-taiwan.com/list.files/list_pdf/hk526e-2.pdf) със постоянен код.
Идеята ми е да закача ардуиното към наличното ми дистанционно за да определя времето необходимо за отваряне на ролетката.
Към момента в дистанционното има 10битов "избирач" опеделящ ключа за защита.

kalos:
Преди малко тествах ето този код:

--- Код: ---/*
  Binary counter
  Counts up and prints result to LEDs, for practicing binary counting.

  This code is in the public domain.
*/

int startPin = 2;
int everyNthPin = 1;
int totalPins = 12;
int delayInms = 500;


void setup() {              
  for (int i = startPin; ( i / everyNthPin ) - startPin < totalPins;  i += everyNthPin) {
    pinMode(i, OUTPUT);  
  }
}

int expo( int base , int power) {
  int total = base;
  for( int times = power; times > 1; times--) {
    total *= base;
  }
  return total;
}

int i = 0;

void loop() {
  int carry = i;
  int currentbit = 0;
 
  int j = startPin;
  for (; ( j / everyNthPin ) - startPin < totalPins;  j += everyNthPin)  {
    currentbit = carry % 2;
    carry = carry / 2;
   
    if (currentbit > 0)  {
      digitalWrite(j, HIGH);
    } else {
      digitalWrite(j, LOW);
    }
  }

  i++;
  if (i >= expo(2 , totalPins) ) i = 0;
  delay(delayInms);
}
--- Край на кода ---

Работи, но нещо не ми е ясно как :)
дали ще може някой да ми разясни?
Благодаря предварително.

Навигация

[0] Списък на темите

[#] Следваща страница

Премини на пълна версия