Покажи участието

От тук може да видиш всички публикации на този потребител.


Публикации - zen

Страници: 1 2 [3] 4 5 ... 8
31
Имам един проект, за който трябва да съхранявам 12K данни в RAM-та на Ардуино. Както се сещате то е невъзможно. Та се чудех някой ползвал ли е допълнителна RAM за Ардуино. Нещо от сорта на това:

http://home.comet.bg/datasheets/EEprom-I2C/doc5279.pdf

32
@westony: интересно ми е какво не харесваш на форума сега. Според мен едно wiki като допулнение е достатъчно

33
Общ форум / Проект с файлове BOM, DBK, DSN, OPJ
« -: Юни 22, 2011, 04:57:40 pm »
След като пуснах темата и доста търсене в нета намерих, че наистина е Proteus. Мерси все пак.

34
Електроника / Еквивалент на HR911105A?
« -: Юни 20, 2011, 05:58:00 pm »
Това имах предвид - обикновен куплунг с външен траф. За сега се оправих. Дадоха ми един HanRun HR911105A и за сега е ОК.

35
Ардуино (Arduino) / 10bit-ов брояч?
« -: Юни 20, 2011, 05:56:40 pm »
Прав си. Така ще стане. Имай предвид все пак, че съм си програмист от по-горно ниво и все още ми е малко трудно да си пречупя мисленето  :lol:

36
Ардуино (Arduino) / 10bit-ов брояч?
« -: Юни 20, 2011, 10:58:09 am »
Не знам дали ще стане така, защото тук говорим за 10 бита

37
Ардуино (Arduino) / 10bit-ов брояч?
« -: Юни 19, 2011, 08:51:00 pm »
Ето. Ако пак не е ясно кажи. За да конвертирам десетично в двуично използвам алгоритъма с делене на 2 и проверка на остатъка:


 long decimal; // променлива за десетично представяне
 char binary[10]; //10 мерен масив, в който пазя двуичните стойности
 
 
void setup() {                
   Serial.begin(9600);   // инициализиране на серийният порт
   decimal = 0;          
   
   for(int br = 4;br<14;br++) // дефиниране на всички  пинове от 4 до 13 като изходи
   {
      pinMode(br, OUTPUT);    
   }  
}

void loop()
{
  decimal++; // добавяне на 1 на променливата
  if(decimal==1024) //ако decimal e 1024 превъртам брояча и почвам пак от 0 (1023 е 10 единици в двучен код 1111111111)
  {  
    decimal = 0;
    for(int br = 0; br < 10; br++) //инициализирам и масива наново
      binary[br] = '0';
  }

   
dec2bin(decimal,binary);  // конвертирам decimal в binary


for(int br = 4;br<14;br++) // обхождане на пиновете
{
  if(binary[br-4] == '1') // проверка на съответният елемент от масива дали е 1. Първият елемент е на 4 пинм, така че всеки път вадя 4
  {
    digitalWrite(br, HIGH);      // ако е 1 свети
  }
  else
  {
     digitalWrite(br, LOW);      // ако не е 1, т.е. 0, не свети
  }
   
}

Serial.println(binary);  // пращам двуичното число на серийния само за проверка
 
}


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

  do    
  {
    remain    = decimal % 2;    // проверявам остатъка при делене на 2
    decimal   = decimal / 2;    // деля на 2 за следващият ход на цикъла
    temp[k++] = remain + '0';   // добавям остатъка на следващата позиция в масива
  }
  while (decimal > 0);    

  for(int br = 0;br < k;br++) // копирам временният масив в binary
    binary[br] = temp[br];  
}

38
Ардуино (Arduino) / 10bit-ов брояч?
« -: Юни 19, 2011, 07:17:15 pm »
Оправих кода и го тествах. Сега е ОК. Ако искаш мога да ти напиша и коментари:

long decimal;  
 char binary[10];
 
 
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;
    for(int br = 0; br < 10; br++)
      binary[br] = '0';
  }

   
dec2bin(decimal,binary);


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

Serial.println(binary);
 
}


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

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

  for(int br = 0;br < k;br++)
    binary[br] = temp[br];  
}
 

39
Ардуино (Arduino) / 10bit-ов брояч?
« -: Юни 19, 2011, 05:22:27 pm »
Ето ти кода. Имай предвид, че не съм го тествал. По късно ще го тествам и евентуално коригирам.


 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;        
}

40
Електроника / Еквивалент на HR911105A?
« -: Юни 16, 2011, 07:45:41 pm »
В КОМЕТ имат това:
http://www.comet.bg/shop/datasheet1.html?ID=6275&PartNumber=

В краен случай и него мога да ползвам, но ми беше интересно дали не може да се използва обикновен куплунг и как ще се отрази това на сигналът. Под обикновен куплунг има предвид без филтър.

41
Електроника / Еквивалент на HR911105A?
« -: Юни 16, 2011, 07:08:35 pm »
Някой знае ли дали това може да се намери някъде в БГ:

HanRun HR911105A




Или евентуано някой ако знае с какво може да се замести. Искам да го използвам за една разработка. Имам контролер, който праща данни през RS-232 или SPI. Този конектор с един ENC28J60 и ще го пусна по мрежата.

42
Ардуино (Arduino) / Серво и IRсензор
« -: Юни 12, 2011, 01:26:36 pm »
Ето така:



#include <Servo.h>

Servo myservo;
int IRsensor = A0;
int SensorVal = 0;


int servo_direction = 0; // 0 - дясно, 1 - ляво
int servo_position = 0;  // първиначална позиция


void setup()
{
myservo.attach(9);
InitServo(); //инициализиране на позицията на сервото
}


void loop()
{
SensorVal=analogRead(IRsensor);
MoveServo(); // движение на сервото

if(SensorVal<200) //Предполагам, че това значи, че сензорът е засякъл нещо
{
  if (servo_position >= 0 && servo_position < 45)
  {
    // Тук сложи код за завиване
  }
  else if (servo_position >= 45 && servo_position < 90)
  {
    // Тук сложи код за завиване  
  }
  else if (servo_position >= 90 && servo_position < 135)
  {  
    // Тук сложи код за завиване
  }
  else if (servo_position >= 135 && servo_position < 180)
  {
    // Тук сложи код за завиване
  }
}



}
//================================================
void MoveServo()
{
  if(servo_direction == 0) // при дясно движение
  {
    servo_position++; // увеличи градуса с 1
    if(servo_position == 181) // ако сервото е стигнало крайна дясна точка (181 градуса)
    {
      servo_position = 180;
       servo_direction = 1; // обърни посоката на движение на ляво
    }
  }
  else if(servo_direction == 1)  // при ляво движение
  {
    servo_position--; // намали градуса с 1
    if(servo_position == -1) // ако сервото е стигнало крайна лява точка (-1 градуса )
    {
      servo_position = 0;
      servo_direction = 0; // обърни посоката на движение на дясно
    }    
  }
  myservo.write(servo_position); // задай градуса на сервото
  delay(15);
}
//===============================================
void InitServo()
{
  myservo.write(servo_position); //инициализиране на сервото
}


Само рябва да си допишеш кода за управление на колелата.

43
Ардуино (Arduino) / Серво и IRсензор
« -: Юни 12, 2011, 10:55:42 am »
Идеята е на всяко мръдване на сервото да чете стойностите от сензора. Какво трябва да прави програмата, когато получи сигнал от сензора?

44
Ардуино (Arduino) / Изработка на Shield за Arduino
« -: Юни 11, 2011, 10:14:29 pm »
Здравейте. Интересува ме някой пробвал ли е да си прави някакъв shield за arduino. Не говоря за вързан breadboard към контролера, а за платка върху него. Проблема ми е че, изходите от лявата и дясната страна не са в една линия и не може да се сложи отгоре универсална печатна платка. Това налага изработкана на "специална" платка. Вариантите са или да си я ецвам сам или да си я поръчам някъде да ми я направят. Някой ако е поръчвал някъде може да сподели. Обикновенно ако пазят шаблона излиза евтино, иначе може и доста солено да излезе.

45
Ардуино (Arduino) / Серво и IRсензор
« -: Юни 11, 2011, 10:04:05 pm »
Нещо такова си го представям:


#include <Servo.h>

Servo myservo;
int IRsensor = A0;
int SensorVal = 0;
int led1 = 13;
int led2 = 12;

int servo_direction = 0; // 0 - дясно, 1 - ляво
int servo_position = 0;  // първиначална позиция


void setup()
{
myservo.attach(9);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
angle_servo = 45;
InitServo(); //инициализиране на позицията на сервото
}


void loop()
{
SensorVal=analogRead(IRsensor);
MoveServo(); // движение на сервото

if(SensorVal<200 &&angle_servo_IRsensor==angle_servo)
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}



}
//================================================
void MoveServo()
{
  if(servo_direction == 0) // при дясно движение
  {
    servo_position++; // увеличи градуса с 1
    if(servo_position == 181) // ако сервото е стигнало крайна дясна точка (181 градуса)
    {
      servo_position = 180;
       servo_direction = 1; // обърни посоката на движение на ляво
    }
  }
  else if(servo_direction == 1)  // при ляво движение
  {
    servo_position--; // намали градуса с 1
    if(servo_position == -1) // ако сервото е стигнало крайна лява точка (-1 градуса )
    {
      servo_position = 0;
      servo_direction = 0; // обърни посоката на движение на дясно
    }    
  }
  myservo.write(servo_position); // задай градуса на сервото
  delay(15);
}
//===============================================
void InitServo()
{
  myservo.write(servo_position); //инициализиране на сервото
}


Така на всеки цикъл мести сервото с една позиция и в Loop имаш на каква позиция сега е сервото. Написъл съм и коментари. Ако имаш въпроси питай.

Страници: 1 2 [3] 4 5 ... 8