Ви не увійшли.
И получается, что на сегодня для русскоязычного сообщества интересны только и исключительно китайские поделки по $4-5 за штуку. Но по ним есть некоторые вопросы ... скорее из области даже любопытства, а не вопросов.
Вот такие примерно UNO R3 ... по всем российским и украинским продавцам:
На плате видно 2 кварца: 16Mhz & 12Mhz.
С 16Mhz всё понятно - это тактовый генератор процессора ATmega328P.
А кто такой 12Mhz?
Это 2 самые массовые у народа модели (IMHO): Arduio UNO & Arduio NANO.
Более того, я думаю (но это только IMHO), что более производительные модели и нецелесообразны, по большому счёту - на задачах, там где не хватает UNO & NANO нужно вообще переходит на другие изделия, под управлением Linux (ARM и др.).
Но по UNO & NANO тоже есть большое разнообразие. Практически все (почти все) описания на русскоязычных сайтах приводят старые картинки, списанные с оригинальных итальянских моделей ... может ещё каких промежуточных. Тем более, что и изобретатели Arduino пересрались промеж собой и начали плодить множество несовместимых между собой моделей... (только в самые последние 1-2 года, как я понимаю, что-то между собой договорились на счёт совместимости).
И получается, что на сегодня для русскоязычного сообщества интересны только и исключительно китайские поделки по $4-5 за штуку. Но по ним есть некоторые вопросы ... скорее из области даже любопытства, а не вопросов.
Спасибо Вам большое за помощь
Пожалуйста ... обращайтесь ещё.
Получилось?
хочу використати окремо аккумулятор на 12В. В тому і проблема.. як поєднати 12В від акумулятора і 5В від ардуіно...
Здесь же, на этом форуме, это уже обстоятельно обсуждалось: Подключение питания 12 В 1 А к Arduino Uno
Но...
Не "но", а читать и искать надо ... хотя бы то, что описано
На одних как надо, на других, как описано выше. 21-й вывод на плате подписан как SCL.
Линия SCL - это линия особого предназначения: интерфейс I2C.
Инструкция по использованию протокола I2C совместно с Arduino
И предназначен этот интерфейс для совершенно конкретных действий.
А если его ногу хочется использовать для другого, куда попало ... то, наверное, нужно не тыкать пальцами как придётся, а разобраться как этот особый пин привести к общему виду, снять с него предназначенную ему функцию.
Объясню как нельзя проще: 4 порта прерываний, по описанию, ОДИНАКОВЫЕ.
Пишу тестовый скетч для всех разом и для каждого в отдельности. В attachinterrupt ставлю по очереди RISING, затем FALLING. Подаю на каждый порт, по очереди, одинаковое кол-во импульсов - 100. Порты 18, 19, 20 прерываются именно 100 раз, а 21-й 70 раз.
Теперь понятно, наконец?
Ставлю всем HIGH, все 4 теперь прерываются 100 раз.
А по описанию свойств портов, они одинаковые.1.2.1. Asynchronous Sensing in ATmega2560
From Table 1-2 External Interrupts Sense Configuration interrupts INT3:0 are registered asynchronously. Pulses on INT3:0 pins wider than the minimum pulse width (typically 50ns for ATmega2560) will generate an interrupt. Shorter pulses are not guaranteed to generate an interrupt.источник: INT0-INT3 ; вектор: 2-5; порт: PD0-PD3. По даташиту они одинаковые.
По даташиту про хай, правда нету упоминаний. Надо бы CHANGE опробовать.
Надо ... ох надо "попробовать" ...
Наугад, пальцем в жопу потыкать - это наше фсё
А тут чудес хватает. В своих Errata-х обычно производители свои косяки описывают. Но я ж писал, некогда было ерраты на 2560 искать.
Через мою память прошли ... даже не десятки, а сотни человек: сотрудники, подчинённые, студенты, коллеги по проектам ... 1000001 шт.
Из них в непонятках, в сложных ситуациях ни один никогда не сказал: "Я идиот". Все, как сговорились, всегда говорили: "Компьютер, ну он такой идиот! ".
Смешно, да?
Нашел решение сам и гут.
Это не решение. Это ... хер знает что.
21-я нога (2-е прерывание) среди собратьев 18,19,20 нога, отрабатывает не как они. Хотя по описанию они одинаковые технически.
Чудес в природе не бывает. Или если бывают, то крайне редко.
код считывания двух потенциометров:
Не пишите весь свой код - никогда ни один нормальный человек не станет разгребаться в куче чужого кода.
Пишите что у вас не получается, вызывает затруднения ... и + короткий фрагмент кода, где эти затруднения.
если не трудно пожалуйста подскажите как сделать
Чтобы было "не трудно" - уделите время и научитесь нормально выделять в сообщениях код (над окошком редактирования у вас есть такая ... "пимпочка" ).
можно на l298n и на реле
Да на любом ... их много.
Только без дополнительных модулей - не катит.
Извините за глупый вопрос, но куда вписовать IR1=0 && IR2=0 && IR3=0 && IR4=0? вместо "0" и "1".
Это к кому глупый вопрос адресован?
Кого на ком не стояло?
© М.Булгаков.
Если к моему предложению, относительно state ... то state - это побитовое отображение ваших IR1, IR2, IR3, IR4 ... только вывернутых наоборот IR4, IR3, IR2, IR1 ... хотя можете вывернуть в любом порядке. Ничего никуда не "вписывать"!
state => ...
0 => IR1=0 && IR2=0 && IR3=0 && IR4=0
1 => IR1=1 && IR2=0 && IR3=0 && IR4=0
2 => IR1=0 && IR2=1 && IR3=0 && IR4=0
3 => IR1=1 && IR2=1 && IR3=0 && IR4=0
4 => IR1=0 && IR2=0 && IR3=1 && IR4=0
5 => IR1=1 && IR2=0 && IR3=1 && IR4=0
6 => IR1=0 && IR2=1 && IR3=1 && IR4=0
7 => IR1=1 && IR2=1 && IR3=1 && IR4=0
8 => IR1=0 && IR2=0 && IR3=0 && IR4=1
... ну и так далее ... до:
15 => IR1=1 && IR2=1 && IR3=1 && IR4=1 - это когда нет препятствия вообще.
за сим позвольте
Разволновалсо ...
Не любит.
21-я нога хреново отрабатывает и FALLING и RISING. Я то сначала думал, что Ардуинов бутлодырь подсирает как-нить.
Залил HEX в чистый кристалл, без бутлодыря, таже хрень, ну и докопался, в итоге,
"докопался" - это когда понятно что происходит и почему?
В тому і проблема.. як поєднати 12В від акумулятора і 5В від ардуіно...
в мене проблема з виникає з 12в. я на виході отримую 4.8В, а потрібно 12В.
От Arduino, питающегося от 5v, невозможно получить 12v без дополнительных усилий: отдельный источник питания 12v, модуль/шилд управления этими 12v, и т.д. ... может, повышающий преобразователь напряжения, если у вас нет (или не хочется) дополнительного источника на 12v.
P.S. А если бы вы управляли электролампочкой 220v - вы эти 220v тоже от Arduino собирались извлечь?
посовитував спросыть гугла сперва, бо такый простый воприс. А потим як шо не зрозумиете, вертайтесь знов.
... о великий, могучий, правдивый и свободный русский язык
© И.С.Тургенев
int arr[] = { A3, A2, A1, A0 }, state = 0; for( int i = 0; i < 4; i++ ) state = ( state << 1 ) + arr[ i ]; ...
А можете сформировать state и проще, но менее наглядно:
int state = ( ( ( A3 << 1 ) + A2 ) << 1 + A1 ) << 1 + A0;
(единственно, нужно будет отладкой проверить значение, убедиться с приоритетами операций << и + , и, возможно, расставить скобки)
Cуть задачи состоит в том, что бы присвоить значения "No_barrier"-когда не один датчик не срабатывает и "Yes_barrier"-когда хотя бы один из датчиков определил препятствия(16 вариантов событий). Датчики подключены к Аналоговым входам Arduino UNO R3. Расстояния выводим с помощью логической 1 и 0.
...
int IR1 = A0;
int IR2 = A1;
int IR3 = A2;
int IR4 = A3;
int arr[] = { A3, A2, A1, A0 }, state = 0;
for( int i = 0; i < 4; i++ )
state = ( state << 1 ) + arr[ i ];
boolean No_barrier = state = 0xf;
boolean Yes_barrier = !No_barrier;
switch( state ) { // здесь вам 16 вариантов развития событий
case 0: // IR1=0 && IR2=0 && IR3=0 && IR4=0
// ...
break;
case 1: // IR1=1 && IR2=0 && IR3=0 && IR4=0
// ...
break;
// ... и так далее: 2, 3, ... до 15
default: // значение когда нет препятствия
// ...
}
Мне нужно перебрать 16 вариантов развития событий, когда на 4 датчиках будут логические 0 и 1
Здесь все ваши 16 вариантов развития событий - раздельно.
3. дополнительная задержка, вносимая в цикл loop() исполняющей системой Arduino исчезающе мала, меньше 1мкс ... неважно сколько там точно.
Это хорошая новость (для меня ). Потому что она опровергает описываемые на разных форумах Arduino утверждения о том, что простейший пример генерации меандра не будет иметь скважности 2:
void loop()
{
digitalWrite( ledPin, HIGH );
delay( 1 );
digitalWrite( ledPin, LOW );
delay( 1 );
}
Так что стоило повозиться с тестированием, чтобы лишний раз самому убедиться, что разговоры по дополнительные задержки, вносимые к циклу loop() - это пустое: цикл - он и в Африке цикл.
Так что измерял ты не скорость вызовов loop, а скорость твоих тормозов.
В принципе, да.
За счёт очень длинных (в сравнении с тактовой частотой) операций процессора +=, * + очень короткой задержки сверх цикла loop(), даже влияние 2-3 операций уже длиннее 1-го цикла loop(). Но это можно компенсировать, сделав калибровку на выполнение точно тех же операций (не заисанных в коде по-другому), но во внутреннем пустом цикле не выходя за пределы 1-го прохода цикла loop().
Как-то вот так, например:
void setup() {
Serial.begin( 115200 );
}
unsigned long rep, i, s1, prev, next;
bool cont = true;
#define step() \
next = micros(); \
if( i++ > 0 ) \
s1 += (next - prev); \
prev = next;
void loop() {
if( cont ) { // ввод числа повторений
while( !Serial.available() );
rep = 0;
while( Serial.available() ) {
int r = Serial.read();
if( r >= '0' && r <='9' )
rep = rep * 10 + ( r - '0' );
delay( 3 );
}
cont = false;
s1 = i = 0;
}
step(); // интервал в loop
if( i > rep ) { // вычисление результатов
double m = (double)s1 / rep;
s1 = i = 0;
loop: step(); // интервал во внутреннем цикле
if( i <= rep ) goto loop;
double c = (double)s1 / rep;
Serial.print( rep, DEC );
Serial.print( " : " );
Serial.print( m, 3 );
Serial.print( " - " );
Serial.print( c, 3 );
Serial.print( " = " );
Serial.println( m - c, 3 );
cont = true;
}
}
В результате будет как-то так:
100 : 9.960 - 9.640 = 0.320
1000 : 9.992 - 9.684 = 0.308
10000 : 9.998 - 9.684 = 0.314
100000 : 9.998 - 9.684 = 0.314
1000000 : 9.998 - 9.684 = 0.315
1. видно хорошую сходимость в зависимости от числа усреднения
2. может, чуть заниженный итог из-за одной "лишней" операции goto (для цикла использовать for() и while() не хотелось, там зависимоть от того как компилятор распорядится, и вносимые искажения там ещё больше ... проверено)
3. дополнительная задержка, вносимая в цикл loop() исполняющей системой Arduino исчезающе мала, меньше 1мкс ... неважно сколько там точно.
P.S. (Это что не лазить и не смотреть период осциллографом... Хотя с осциллографом тоже есть вопрос: в цикле loop() должна быть хотя бы одна операция вывода ... даже если её записать операцией AVR как PIND |= (1 << 3); - без промежуточного вызова функций Arduino)
а вот с людьми
Ну и?
Здрасьте, здрасьте ... господин, который даже на имя себе не наработал.
Мне с вами сраться недосуг ... я там выше высказал некоторые соображения относительно Arduino, и я, как ба-а-а-альшой демократ, даже не требую признавать на 100% их правоту. Если вы с чем там не согласны, то вы выскажите аргументированные обоснования, мы можем о них поговорить. А если вам просто не нравится, и вы собираетесь продолжать нести эту свою блевотину - то мне ваши проблемы похрен.
Вам посраться не с кем? Так вон там, у вас под рукой, есть господин достойнейший Green - вы вы с ним и побеседуйте. Вы даже лицом чем-то схожи...
где учили? )
В разных и хороших местах учили ... думаю, что не в пример вам.