Программирование

Вопросы по программированию Arduino.

Работа с битами.

Коллеги!

Есть переменная типа uint16_t. Необходимо с битами этой переменной проводить операции: установить в 0, установить в 1, инвертировать.
В качестве параметра получаю номер бита и собственно переменную.
Установить в 1 - я понимаю. Сделать битовую маску возведением 2 в степень i и выполнить битовое ИЛИ.
Вопросы:
1. можно ли инвертировать битовую маску? Например из 00010000 получить 11101111.
2. Как красиво инвертировать i-й бит?

Не гуру в С.
Подскажите пожалуйста.

Мега 2560 - не заливаются скетчи

Собственно купил, пришел радостный домой и ничего не пишется. Порыл интернет, прописал заново через Flip 3.4.7 загрузчик - не помогло
При подключении светитятся несколько секунд два диода on и 13, затем 13 начинает моргать (я так понимаю стандартный blink туда залит по умолчанию)
При попытке записи 13-й диод перестает моргать, один раз моргает ТХ и всё.... так и висим. В логе только 
"Размер скетча в двоичном коде: 666 байт (из 258 048 байт максимум)"
и всё((((



Нестабильная работа УЗ датчика

Подскажите пожалуйста возможные причины и их решения проблемы УЗ датчика HC-SR04. 
Суть такая. Один датчик редко, но выдает значение 0, хотя расстояние нормальное, важно не само левое значение, которое можно пропустить или филтр сделать, а то что в этом случае большая задержка возникает. Второй датчик чуть ли не каждые значений 10, и при том что они довольно быстро обновляются почти каждые 2 секунда идет задержка примерно в 1 секунду. Это очень мешает, робот давно проедет предельное расстояние с такой задержкой. Код программы стандартный:

Что неправильно делаю при работе с SD?

 Сабж, не выводит в терминал массив dirFiles[]

//Включение библиотек карты, дисплея, может быть, и клавиатуры
#include <SD.h>
#include <LiquidCrystalRus.h>

//Инициализация переменных
Sd2Card card;
SdVolume volume;
SdFile root; 
File rootDir;

char* dirFiles[] = {};


void setup()
{
//Инициализация карты, сериалпорта, дисплея, может быть, и клавиатуры
  Serial.begin(9600);
  pinMode(53, OUTPUT);

//Проверка карты
  if (!SD.begin(53)) {
    Serial.println("Initialization SDCard failed!");
    return;

RFID помогите

Привет всем!
ПОмогите разобраться с подключение и кодом для считывателя на чипе htrc110 http://www.nxp.com/documents/data_sheet/ht037030.pdf. Пробовал и через SoftwareSerial  и просто дрыгать ногами нифига молчит. Подключаю к Мега2650.

Какие существуют ограничения на длину String?

 В программе приходится работать с внешним устройством по COM порту. На определенные команды это устройство может прислать ответ объемом до 800 байт. Используя String для чтения данных из Serial, получаю только 63 байта.
Где наложены ограничения? В буфере Serial или в String?

Мониторинг ком порта на Visual С#

 З ардуино отправляется даные на компорт! Нужно постоянно выводить все ето в textBox непрерывно

 for (int i = 0; i <= 1; )       //початок циклу опитування потру 
            {
                Timer t = new Timer();            //затримка для читання порту
                t.Interval = 50;
                t.Enabled = true; //старт таймера
                
                c = serialPort1.ReadLine();
                textBox1.Text = с;
                serialPort1.DiscardInBuffer();      //очистка буферу прийому порту

Прерывание по приходу байта в UART

 Прошу заранее прощения, если где то все-таки пропустил на форуме описание подобного вопроса. Но по внешним прерываниям 0-5 описания полно, а вот с вектором  USART1_UDRE_vect ничего не нашел...

при вводе в программу такой строки:

ISR(USART1_UDRE_vect)
{ 
 //stringUart = Serial1.read(); забираем байт
}

компилятор выдает такую ошибку:

пример использования boolean

// Вместо HIGH и LOW можно использовать boolean иногда это очень удобно. 

 

boolean b = false;

void setup(){
pinMode (13, OUTPUT);
}

void loop(){
digitalWrite (13, b);
delay (1000);
b = !b;

}

Управление несколькими сервами через serial

Привет! Делаю проект для управления сервами по xbee. C одной стороы потенциометры, с другой - сервы. С одной сервой все получилось. А вот как быть с 2мя? Как через сериал отправить данные какой серве крутиться?

 

Мысли такие: нужны 2 переменные

1 - в которой хранится номер сервы,

2 - в которой хранится угол.