Digimouse

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Здравствуйте, не могу понять по координатам монитора. Надо что по Y он ущел вверх могитора. Заранее спасибо.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Здравствуйте, я вот тоже не могу понять по черенку лопаты. Надо что по Z она глубже копала. Заранее спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

fanat.arduino пишет:
Здравствуйте, не могу понять по координатам монитора.

Заколдуй их, Рон!

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
#include "DigiMouse.h"
void setup() {
  DigiMouse.begin();
 
}
 
void loop() {
DigiMouse.moveY(-900); //down 10
  DigiMouse.delay(500);
fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Я изменяю положение положение пикселей по Y, он только меньше меняется 

sadman41
Offline
Зарегистрирован: 19.10.2016

Система координат монитора - тут

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

 

#include "DigiKeyboard.h"  
int val = 0; 
void setup() {
  pinMode(4, INPUT);

}
void loop() {
 if (digitalRead(0)==HIGH) 
    {
    DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
 delay(500);
 DigiKeyboard.println("CMD");
delay(1000);
  DigiKeyboard.println("start Chrome");
  delay(2000);
  DigiKeyboard.println("тут ссылка");
  delay(3000);
   DigiKeyboard.sendKeyStroke(KEY_F5);
     delay(5000);
  DigiKeyboard.sendKeyStroke(KEY_P);
  
}
}

не открывается, я немного изменил скетч и он работает как мне надо. Мне не понятно как сделать, что при перезапуски пин в LOW, то когда уна перезагружается, действие выполняется на digisparke 

nik182
Offline
Зарегистрирован: 04.05.2015

Перед пинмоде присвойте пину значение LOW. 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

в сетапе указал pinMode(10, OUTPUT);

nik182
Offline
Зарегистрирован: 04.05.2015

Это режим работы, а значение через digitalWrite где? Должно быть до  pinMode

fanat.arduino
Offline
Зарегистрирован: 10.11.2019

извини, чет не о том подумал, вот есть в скетче,   digitalWrite(10, LOW); в сетапе

nik182
Offline
Зарегистрирован: 04.05.2015

В Digispak нет 10 ноги. В скетче #6 нет digitalWrite(10, LOW); в сетапе. Приведите правильный скетч. 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
Это на arduino Uno
#include <iarduino_RTC.h>   
iarduino_RTC time(RTC_DS1307);
const char* strM="JanFebMarAprMayJunJulAugSepOctNovDec";
const char* sysD=__DATE__;                             
const int i[6] {(sysT[6]-48)*10+(sysT[7]-48), (sysT[3]-48)*10+(sysT[4]-48), (sysT[0]-48)*10+(sysT[1]-48), (sysD[4]-48)*10+(sysD[5]-48), ((int)memmem(strM,36,sysD,3)+3-(int)&strM[0])/3, (sysD[9]-48)*10+(sysD[10]-48)};
unsigned long rtc;
void setup()
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
void ds1307()
{

 if(time.Hours==6&& time.minutes==30&& time.seconds==0 && time.weekday!=7)
{
time.begin();   
  digitalWrite(10, HIGH); 
  digitalWrite(10, LOW); 

}
 if (millis() - rtc > 1000)
 {
lcd.setCursor(0,0);
lcd.print( time.gettime("d/m/y"));
lcd.setCursor(0,1);
lcd.print(time.gettime("H:i:s"));
lcd.setCursor(13,0);
lcd.print( time.gettime("D"));
rtc = millis();
}
void loop()
ds1307();

 

fanat.arduino
Offline
Зарегистрирован: 10.11.2019
Это на Digispark
#include "DigiKeyboard.h"  
 void setup() {
  pinMode(4, INPUT);

}
void loop() {
 if (digitalRead(0)==HIGH) 
    {
    DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
 delay(500);
 DigiKeyboard.println("CMD");
delay(1000);
  DigiKeyboard.println("start Chrome");
  delay(2000);
  DigiKeyboard.println("тут ссылка");
  delay(3000);
   DigiKeyboard.sendKeyStroke(KEY_F5);
     delay(5000);
  DigiKeyboard.sendKeyStroke(KEY_P);
  
}
}

 

nik182
Offline
Зарегистрирован: 04.05.2015

На уно не компилируется. У сетап нет скобочек. digitalWrite(10, LOW); должен стоять до pinMode(10, OUTPUT); time.begin(); должен вызываться один раз в сетап. Переменная sysT не определена. void ds1307() нет закрывающейся скобки. Вы нам мозги парите? 

 
fanat.arduino
Offline
Зарегистрирован: 10.11.2019

Это не тот код, что используется на uno сейчас, на uno сейчас крутится код, из 200 строчек, я написал, код только для часов и digisparka, где у меня есть проблема.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дурдом :(

fanat.arduino
Offline
Зарегистрирован: 10.11.2019


 
  Это на UNO
#include <Adafruit_Sensor.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <iarduino_RTC.h>   
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <OneWire.h> 
iarduino_RTC time(RTC_DS1307);
OneWire ds(2); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
int regim=1;
int flag=0;
int valBut = 0;                                  // Задаем переменную, для счетчика 
long previousMillis = 0;              // Зададим начальное значение для счетчика millis
long TimePush = 2000;                 // Время нажатия на кнопку 
unsigned long temp;
unsigned long rtc;
unsigned long alarm;
#define DHTPIN 7 
DHT dht(DHTPIN, DHT11); //Инициация датчика
const char* strM="JanFebMarAprMayJunJulAugSepOctNovDec"; // Определяем массив всех вариантов текстового представления текущего месяца.
const char* sysT=__TIME__;                               // Получаем время компиляции скетча в формате "SS:MM:HH".
const char* sysD=__DATE__;                               // Получаем дату  компиляции скетча в формате "MMM:DD:YYYY", где МММ - текстовое представление текущего месяца, например: Jul.
//  Парсим полученные значения sysT и sysD в массив i:   // Определяем массив «i» из 6 элементов типа int, содержащий следующие значения: секунды, минуты, часы, день, месяц и год компиляции скетча.
const int i[6] {(sysT[6]-48)*10+(sysT[7]-48), (sysT[3]-48)*10+(sysT[4]-48), (sysT[0]-48)*10+(sysT[1]-48), (sysD[4]-48)*10+(sysD[5]-48), ((int)memmem(strM,36,sysD,3)+3-(int)&strM[0])/3, (sysD[9]-48)*10+(sysD[10]-48)};
//int moniror = 9;
void setup()
{
  digitalWrite(10, LOW);
  pinMode(10, OUTPUT);
//pinMode(moniror, OUTPUT); 
  Serial.begin(9600);
lcd.begin();
  Serial.begin(9600);
  Wire.begin();
dht.begin();
 time.begin();                                        // Инициируем RTC модуль
//ptime.settime(i[0],i[1],i[2],i[3],i[4],i[5], 0);  
//pinMode(6, OUTPUT); 
 

}

void loop()
{
 
//void(* resetFunc) (void) = 0;
if(digitalRead(8)==HIGH&&flag==0)//если кнопка нажата 
{
regim++;
flag=1;
if(regim>2)//ограничим количество режимов
{
regim=1;//так как мы используем только одну кнопку,
}
}
if(digitalRead(8)==LOW&&flag==1)//если кнопка НЕ нажата

{
flag=0;//обнуляем переменную "knopka"
}

if(regim==1)
{
 ds18b20();
 dth11();
 ds1307();
}
if(regim==2)
{
ds1307();
  lcd.setCursor(9,0);
 lcd.print("    ");
  lcd.setCursor(9,1);
   lcd.print("       ");
}


/*{
  digitalWrite(moniror, LOW); 
}
                       
    if(digitalRead(8) == HIGH)                       // если кнопка нажата
    {                                                   //
      if(millis() - previousMillis  >=  1)                 // начинаем считать время нажатия
        {                                               //
          previousMillis = millis();                    //
          valBut++;                                     // с каждой миллисекундой увеличиваем значение valBut
        }           
    }
  if(valBut >= TimePush)                               // как толькозначение valLed становится равным TimtPush
    {                                                   //
         Serial.print("Reboot");
       resetFunc();
       valBut = 0;                                      //  и устанавливаем valBut = 0
    }*/                                    
 }

void ds18b20() 
{
if (millis() - temp > 5000)
{
byte data[2]; // Место для значения температуры
ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
  ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
  ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
  ds.reset(); // Теперь готовимся получить значение измеренной температуры
  ds.write(0xCC);
  ds.write(0xBE); // Просим передать нам значение регистров со значением температуры
  // Получаем и считываем ответ
  data[0] = ds.read(); // Читаем младший байт значения температуры
  data[1] = ds.read(); // А теперь старший
  // Формируем итоговое значение:
  //    - сперва "склеиваем" значение,
 //    - затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию - это 0,0625)

 float temperature =  ((data[1] << 8) | data[0]) * 0.0625;
lcd.setCursor(13,1);
if(temperature >1 && temperature < 10)
{
lcd.print("0");
}
lcd.print(temperature,0);
if(temperature >= 20)
{
  lcd.setCursor(15,1);
  lcd.print("t");
}
 if(temperature <= 14)
{
    lcd.setCursor(15,1);
  lcd.print("x");
}
 if(temperature >= 15)
 {
   lcd.setCursor(15,1);
  lcd.print("n");
 }
 temp = millis();
}
}
void dth11()
{
  if (millis() - temp > 4000)
{
float h = dht.readHumidity();
  float t = dht.readTemperature();
lcd.setCursor(9,0);
lcd.print(t,0);
lcd.setCursor(9,1);
lcd.print(h,0);
lcd.print("%");
if(t >= 30)
{
  lcd.setCursor(11,0);
  lcd.print("t");
}
if(t <= 29)
{
    lcd.setCursor(11,0);
  lcd.print("x");
}

}
}
void ds1307()
{

 if(time.Hours==18&& time.minutes==07&& time.seconds==0 && time.weekday!=7)
{
  //tone(6,800,5000);
  digitalWrite(10, HIGH); 
  digitalWrite(10, LOW); 

}
 if (millis() - rtc > 1000)
 {
lcd.setCursor(0,0);
lcd.print( time.gettime("d/m/y"));
lcd.setCursor(0,1);
lcd.print(time.gettime("H:i:s"));
lcd.setCursor(13,0);
lcd.print( time.gettime("D"));
rtc = millis();
}
  }