#26 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:24:20

NoName пише:

http://arduino-ua.com/prod1233-plata-ra … -discovery
я бы себе такой взял )  и поиграться есть где и все готово )

понял, изучаю.

#27 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:16:56

NoName пише:

nokia 3310 )
дисплей - это ваш выбор, что есть готовое и удовлетворяет по цене - используйте, ну и что б ног хватило, как обычно такие дисплеи с параллельной шиной, ног забирают много

nokia 3310 не подойдет, нужен цветной 3.2 дюйма

#28 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:12:18

NoName пише:

уже было )
сначала дисплей, а оставшиеся ноги для реле, любой порт общего назначения подойдет   
сто осталось - проверите по свободным контактам )

может тогда дисплей посоветуете ?

#29 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:09:07

NoName пише:

ardnew с дисплеем уже сами ) либ для ардуино в глаза не видал )  там же еще и меню с картинками нужны,

согласен, сам попробую разобраться, ну уж про ноги то скажите, пожалуйста smile

#30 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:07:55

NoName пише:

начинаем тогда наверное  с дисплея и подключаем как в примере написано )
а на все свободные ноги - релюхи

вот и хотелось бы узнать какие это ноги ?
так как в этой теме (ардуино), буквально меньше недели, знаний ноль sad

#31 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:06:13

NoName пише:

а этом проекте часом не будет еще езернета,  usb джойстика и  батарейного питания? добейте уже меня, чего мучать NoName

нет, этого ничего не будет smile

#32 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 13:05:08

Nefreemen пише:

Тю, а какого дисплея с тачпадом?

пока не определился smile  планирую 3.2 дюйма цветной.

#33 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 12:54:31

уважаемые, подскажите, с каких портов меги 2560 лучше всего управлять реле,
в дальнейшем планируется подключение дисплея с тачпадом, с учетом его что бы реле не мешали ?

#34 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 12:23:18

Nefreemen пише:

ardnew, если работает Serial.readStringUntil('\n'), не забудьте выбросить массив char[], пусть не болтается  big_smile .

да, убрал все лишние.

#35 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 12:19:48

NoName пише:

ardnew, это код (  String str = Serial.readStringUntil('\n'); ) неправильный!
данный алгоритм  тормозит  основной поток!!!  выбросьте этот вариант и никогда не пользуйтесь!

ну вот, только обрадовался sad  а как правильно ?

#36 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 12:07:48

Nefreemen пише:

   if (str == "Rele 1") {
      digitalWrite(led11, HIGH);
   }
когда то  в последовательности if пропустил случайно скобку. Потом парился с нарушением логики работы кода.
Я бы посоветовал ardnew попробовать такой вариант, чем Wirg не шутит  big_smile ?
П.С. Посмотрите на эту последовательность if повнимательней чего то меня терзают смутные предчувствия roll с точки зрения синтаксиса.

фигурные скобки не помогли sad

#37 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 12:06:22

NoName пише:
void loop()
{   
      if (Serial.available() > 0)
  {
    // Serial.readBytes( input, 20 );
    String str = Serial.readStringUntil('\n');
    // String str= (String) input;
    if (str == "Rele 1") digitalWrite(led11, HIGH);
    if (str == "Rele 2") digitalWrite(led12, HIGH);
    if (str == "Rele 3") digitalWrite(led13, HIGH);
    if (str == "Rele 11") digitalWrite(led11, LOW);
    if (str == "Rele 22") digitalWrite(led12, LOW);
    if (str == "Rele 33") digitalWrite(led13, LOW);
    Serial.println (str) ;
}
}

возможно так
а чем управляющие команды передаете? с терминалки или есть некий софт?

ДА! этот код работает так как нужно, и с терминала и с программы !!!
NoName, я вам очень признателен за уделенное время и помощь !!!

#38 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 11:53:42

Nefreemen пише:

Я бы посоветовал ardnew попробовать такой вариант, чем Wirg не шутит  big_smile ?
П.С. Посмотрите на эту последовательность if повнимательней чего то меня терзают смутные предчувствия roll с точки зрения синтаксиса.

сейчас попробую и отпишусь.

#39 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 11:52:35

NoName пише:

возможно так
а чем управляющие команды передаете? с терминалки или есть некий софт?

ок, сейчас попробую, при отладке с терминала, а так с программы.

#40 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 11:33:06

NoName пише:

этот пример тоже хорош, но проверять строки нужно только по получению футера, \r\n например

эх.. если бы еще понять о чем вы говорите sad

#42 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 10:42:30

все! эти три реле вынесли мне весь мозг! опять херня какая то!
сам код :

void loop()
{   
      if (Serial.available() > 0)
  {
    Serial.readBytes( input, 20 );
    String str= (String) input;
    if (str == "Rele 1") digitalWrite(led11, HIGH);
    if (str == "Rele 2") digitalWrite(led12, HIGH);
    if (str == "Rele 3") digitalWrite(led13, HIGH);
    if (str == "Rele 11") digitalWrite(led11, LOW);
    if (str == "Rele 22") digitalWrite(led12, LOW);
    if (str == "Rele 33") digitalWrite(led13, LOW);
    }
}

включаю по очереди все три реле, включаются, выключаю по очереди все три реле, выключаются, все, затем не могу включить не одно реле!
или, включаю реле 1, включается, выключаю реле 1, выключается, и опять не могу включить не одно реле!
что опять не так ?

#43 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-04 09:33:24

Nefreemen пише:

Например так:
       int x = sum[l_cnt] * V_REF;
       int y =  1024 *NUM_SAMPLES;
       voltage[l_cnt] = (float) x / y;

Это я бы сказал вопрос не программирования а математики. И уберите те нули в  V_REF и везде где они не значащие.
А вообщем из atmeg еще тот меритель big_smile .Но в такой точности вполне реально.
И последний вопрос, а реально компилировать вы программу пробовали? roll
P.S. Проверил компилируется  smile .

строку заменил, работает, и про нули, вы имеете ввиду 5 вместо 5.0 ?

#44 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 21:39:33

Nefreemen пише:

Насколько Вам критична точность измерения напряжения? Вопрос не праздный, потому что увидел деление float на flot думаю что реальность в железе Вас сильно разочарует по сравнению с Протеусом. NoName железно прав в том что в МК нужно максимально избегать математических действий с float.

в принципе +-0.2 вольта меня устроит, но если есть вариант лучше, то конечно было бы очень интересно посмотреть, делал по примерам, в программировании не селен sad

вы вот эту строку имели ввиду:   voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024;
как правильно нужно ее сделать ?

#45 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 21:08:29

Nefreemen пише:

Было...То что работало в Протеусе не работало в железе sad , и наоборот. Поэтому с тех пор у меня своеобразное отношение к нему roll .

понятно, ну не настолько сложная эта программа что нельзя ее симулировать в протеусе, но зато удобно очень smile

#46 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 20:53:51

Nefreemen пише:

Опоньки, приехали, Протеус. Ноу коммент.

а что не так, каждые 3 минуты шить ардуино лучше ?

#47 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 20:51:58

lkj пише:

Хотел подсказать, но вы не хотите. Хуй с Вами

он всегда со мной, но я такой быстрый  smile

#48 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 20:49:08

lkj пише:

Покажите свою программу

пока так :

#define NUM_SAMPLES 10
#define DIV_1    1.0
#define DIV_2    1.0
#define DIV_3    455
#define DIV_4    11.0718
#define DIV_5    50.0718
#define V_REF    5.000

int sum[5] = {0};                // sums of samples taken
unsigned char sample_count = 0;  // current sample number
float voltage[5] = {0.0};        // calculated voltages
char l_cnt = 0;                  // used in 'for' loops
char input[20];

// Переменные для управления реле
int led11 = 11; 
int led12 = 12; 
int led13 = 13; 

void setup()
{
  Serial.begin(9600);
  pinMode(led11, OUTPUT);  // и режим работы 11-ого цифрового пина в качестве выхода
  pinMode(led12, OUTPUT);  // и режим работы 12-ого цифрового пина в качестве выхода
  pinMode(led13, OUTPUT);  // и режим работы 13-ого цифрового пина в качестве выхода
}

void loop()
{
// take a number of analog samples and add them up
    while (sample_count < NUM_SAMPLES) {
        // sample each channel A0 to A4
        for (l_cnt = 0; l_cnt < 5; l_cnt++) {
            sum[l_cnt] += analogRead(A0 + l_cnt);
        }
        sample_count++;
        delay(10);
    }
    // calculate the voltage for each channel
    for (l_cnt = 0; l_cnt < 5; l_cnt++) {
        voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024;
    }
    
    voltage[0] = voltage[0] * DIV_1;
    voltage[1] = voltage[1] * DIV_2;
    if (voltage[1]<1.0) voltage[1]=1.0;
    voltage[2] = voltage[2] * DIV_3;
    voltage[3] = voltage[3] * DIV_4;
    voltage[4] = voltage[4] * DIV_5;
    
    // voltage 1 - A (pin A0)
    Serial.print("A ");
    Serial.print(voltage[0], 2);
    // voltage 2 - B (pin A1)
    Serial.print("B ");
    Serial.print(voltage[1], 2);
    // voltge 3 - C (pin A2)
    Serial.print("C ");
    Serial.print((int)voltage[2], 1);
    // voltage 4 - D (pin A3)
    Serial.print("D ");
    Serial.print((int)voltage[3], 1);
    // voltage 5 - E (pin A4)
    Serial.print("E ");
    Serial.print((int)voltage[4], 1);
    Serial.println("");
    delay(10);
    // reset count and sums
    sample_count = 0;
    for (l_cnt = 0; l_cnt < 5; l_cnt++) {
        sum[l_cnt] = 0;
    }

// Ввод данных
      if (Serial.available() > 0)
  {
    Serial.readBytes( input, 20 );
    String str= (String) input;
    if (str == "Rele 1") digitalWrite(led11, HIGH);
    if (str == "Rele 2") digitalWrite(led12, HIGH);
    if (str == "Rele 3") digitalWrite(led13, HIGH);
  }
}

#49 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 20:43:27

Nefreemen пише:

Ну...  roll если "задержка" тогда  нужно мониторить  порт компьтера. Предполагаю что 90% это вопрос компьютерной программы и оставляю 10% на тормоз системы.

я понял, это не столь критично, да и возможно эти задержки в самом компьютере, виртуальный порт, протеус, это мелочь.

Nefreemen пише:

Понятно что могут быть накладки и не четкое срабатывание (именно накладки в порте компьютера). Одна команда не ушла а другая уже записалась а потом вместе улетели. А ардуино получило "Relay 1Relay 2" и впало в ступор с чем сравнивать. В таком случае больше подходит алгоритм NoName  smile .

остановлюсь на вашем варианте, мне он более понятен, а накладки возможно как и сказал выше от конфигурации компа.

последний момент-просьба smile
как все таки более грамотно написать код для коммутации, у меня две группы, по 6 и 4 реле, и три одиночных реле, всего 13 шт. к каким портам ардуино их лучше подключить ?

#50 Re: Програмування Arduino » помогите новичку пожалуйста ! » 2016-03-03 20:33:59

lkj пише:

Что вы хотите сделать

коммутацию различных устройств.

Підвал форуму