91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

自動(dòng)寵物喂食機(jī)的制作

454398 ? 來(lái)源:wv ? 2019-08-31 09:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:需要硬件

- 1x Arduino Mega 2560

- 1x步進(jìn)電機(jī)12V 28BYJ-48

- 1x步進(jìn)電機(jī)驅(qū)動(dòng)器ULN2003

- 1x超聲波傳感器HC-SR04

- 1x時(shí)鐘模塊DS1307

- 1x 0.91“IIC I2C 128x32 SSD1306 SPI OLED顯示模塊

- 20x線路M/F& 2x線M/M

- 1x面包板

- 1x電池

步驟2:設(shè)置

電源= 5V

接地= GND

OLED_MOSI = 9

OLED_CLK = 10

OLED_DC = 11

OLED_CS = 12

OLED_RESET = 13

trigPin = 2

echoPin = 3

RTC SDA = SDA 20

RTC SCL = SCL 21

motorPin1Feed = 22

motorPin2Feed = 24

motorPin3Feed = 26

motorPin4Feed = 28

第3步:3D打印。..。.. 3D打印。..。..以及更多3D打印

您可能已經(jīng)注意到STL的數(shù)量相當(dāng)多 - 附在這個(gè)Instructable上的文件,因此我們的構(gòu)造非常需要手頭有3D打印機(jī)。

雖然我們使用了所有的設(shè)計(jì)來(lái)創(chuàng)建這臺(tái)機(jī)器,但是有幾個(gè)STL文件你可以在技術(shù)上沒(méi)有生活;

“mount-base-pet-feeder.stl” - 取決于你打算如何設(shè)置包含布線的機(jī)艙,Arduino,步進(jìn)電機(jī)和步進(jìn)驅(qū)動(dòng)器

“l(fā)eft-mount-adjuster-pet-feeder.stl“ -

”right-mount-adjuster-pet-feeder.stl“ -

”離開-spacer-mount-adjuster-pet-feeder.stl“ -

”right-spacer-mount-adjuster-pet-feeder.stl“ -

”Bowl-v2.stl “ - 如果你不使用我們特制的碗,我們不會(huì)抱怨。

“M& M‘s.stl” - 這僅用于在Autodesk Fusion 360中渲染和說(shuō)明我們的自動(dòng)PetFeeder。**不能用作寵物的食物。我們對(duì)不當(dāng)使用不承擔(dān)任何責(zé)任**

第4步:讓我們添加一些代碼

//Basic Embedded Programming 2. Semester Project UCL

//TinyRTC I2C module DS1307

#include ”Wire.h“

#define DS1307_I2C_ADDRESS 0x68

// Convert normal decimal numbers to binary coded decimal

byte decToBcd(byte val)

{

return( (val/10*16) + (val%10) );

}

// Convert binary coded decimal to normal decimal numbers

byte bcdToDec(byte val)

{

return( (val/16*10) + (val%16) );

}

#include

#include

#include

#include

#include

#include

RTC_DS1307 RTC;

//#include DS1307 rtc(SDA, SCL);

//declaring variables for the motor (driver) pins

int motorPin1Feed = 22;

int motorPin2Feed = 24;

int motorPin3Feed = 26;

int motorPin4Feed = 28;

//if(hour 》=

int petFeedMorning;

int petFeedAfternoon;

int petFedMorning;

int petFedAfternoon;

//Declare ultrasonic sensor pins

int trigPin = 2; // Trigger

int echoPin = 3; // Echo

long duration, cm, inches;

// Variables will change:

//Millis()

long previousMillis = 0; // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,

// will quickly become a bigger number than can be stored in an int.

long interval = 1000; // interval at which to blink (milliseconds)

//Disp millis()

//int period = 1000;

unsigned long time_now = 0;

#define STEPSFeed 64

#define STEPSTop 64 //Number of steps per revolution

#define STEPSBottom 64 //Number of steps per revolution

//The pin connections need to be 4 pins connected

// to Motor Driver In1, In2, In3, In4 and then the

// here in the sequence 1-3-2-4 for proper sequencing of 28BYJ48

Stepper small_stepperFeed(STEPSFeed, motorPin1Feed, motorPin3Feed, motorPin2Feed, motorPin4Feed);

Stepper small_stepperTop(STEPSTop, motorPin1Top, motorPin3Top, motorPin2Top, motorPin4Top);

int Steps2TakeFeed;

int Steps2TakeTop;

unsigned long startMillis; //some global variables available anywhere in the program

unsigned long currentMillis;

const unsigned long period = 1000; //the value is a number of milliseconds

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 32 // OLED display height, in pixels

// Declaration for SSD1306 display connected using software SPI (default case):

#define OLED_MOSI 9

#define OLED_CLK 10

#define OLED_DC 11

#define OLED_CS 12

#define OLED_RESET 13

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,

OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

// ’Logo 2‘, 128x32px

static const unsigned char myBitmap [] PROGMEM = {

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbc, 0x3c, 0xc6, 0x1e, 0x0e, 0x07, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbc, 0x3c, 0xc6, 0x3c, 0x0f, 0x07, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xb4, 0x7c, 0xc6, 0x78, 0x1f, 0x07, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbe, 0x7c, 0xc6, 0xf0, 0x1b, 0x87, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbe, 0x7c, 0xc7, 0xe0, 0x1b, 0x87, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xb6, 0x7c, 0xc7, 0xe0, 0x39, 0x87, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xba, 0x5c, 0xc7, 0xf0, 0x31, 0xc7, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbb, 0xdc, 0xc7, 0x70, 0x7f, 0xc7, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbb, 0xdc, 0xc6, 0x38, 0x7f, 0xc7, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbb, 0xdc, 0xc6, 0x1c, 0x60, 0xe7, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xbb, 0x9c, 0xc6, 0x1e, 0xe0, 0xe7, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0xb9, 0x9c, 0xc6, 0x0e, 0xe0, 0x67, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xe7, 0xfc, 0xe0, 0xc7, 0x0e, 0x73, 0x83, 0x07, 0xe1, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xc7, 0xfc, 0xf0, 0xc7, 0x0e, 0x73, 0x83, 0x0f, 0xf1, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xe7, 0x00, 0xf8, 0xc7, 0x8e, 0x73, 0xc3, 0x1c, 0x39, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xe7, 0x00, 0xf8, 0xc7, 0x8e, 0x73, 0xe3, 0x38, 0x19, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xc7, 0x00, 0xfc, 0xc6, 0xce, 0x73, 0x63, 0x38, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xe7, 0xfc, 0xec, 0xc6, 0xee, 0x73, 0x73, 0x38, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xe7, 0xfc, 0xee, 0xc6, 0x6e, 0x73, 0x33, 0x38, 0xf9, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xc7, 0x00, 0xe6, 0xc6, 0x7e, 0x73, 0x1b, 0x30, 0xf9, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xc7, 0x00, 0xe3, 0xc6, 0x3e, 0x73, 0x1b, 0x38, 0x19, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x60, 0xe7, 0x00, 0xe3, 0xc6, 0x3e, 0x73, 0x0f, 0x38, 0x39, 0xff,

0xff, 0xbf, 0xff, 0xff, 0xfc, 0x60, 0xc7, 0xfc, 0xe1, 0xc6, 0x1e, 0x73, 0x0f, 0x1e, 0x79, 0xff,

0xff, 0xbf, 0xff, 0xff, 0xfc, 0x60, 0xc7, 0xfc, 0xe1, 0xc6, 0x0e, 0x73, 0x07, 0x0f, 0xf9, 0xff,

0xff, 0xbf, 0xff, 0xff, 0xfc, 0x60, 0xe7, 0xfe, 0xe0, 0xc6, 0x0e, 0x73, 0x07, 0x07, 0xc9, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff,

0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff

};

void setup() {

Wire.begin();

//Serial Port begin

Serial.begin(9600);

// Using this to set the initial time:

// DS1307 seconds, minutes, hours, day, date, month, year

// setDS1307time(30,9,19,1,1,4,19);

// 1 = Sunday

//Define inputs and outputs (Ultrasonic sensor)

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

startMillis = millis(); //initial start time

// put your setup code here, to run once:

small_stepperFeed.setSpeed(200);

small_stepperTop.setSpeed(200);

// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally

if(!display.begin(SSD1306_SWITCHCAPVCC)) {

Serial.println(F(”SSD1306 allocation failed“));

for(;;); // Don’t proceed, loop forever

}

// Show initial display buffer contents on the screen --

// the library initializes this with an Adafruit splash screen.

display.display();

delay(500); // Pause for 2 seconds

// Clear the buffer

display.clearDisplay();

}

void loop() {

//Over 35 cm display length, time, day and date

if(cm 》= 45) {

ultrasonic();

displayTimeSerial();

displayTimeDisplay();

delay(750);

displayDayDateDisplay();

delay(750);

checkTime();

Serial.print(”Morning: “);

Serial.println(petFeedMorning);

Serial.print(”Afternoon: “);

Serial.println(petFeedAfternoon);

}

//Between 35 cm (under) and 5 cm (over) feed pet, turn motor CW

//else if(cm 《= 20 && hour 》= 7 && hour 《= 13) {

if(cm 《= 45 && cm 》8) {

ultrasonic();

stepMotorFeed();

}

//Under 5 cm display length, time, day and date

else if(cm 《= 8) {

ultrasonic();

displayTimeSerial();

displayTimeDisplay();

if(petFedMorning 《1) {

petFedMorning +1;

Serial.print(petFedMorning);

}

}

}

void setDS1307time(byte second, byte minute, byte hour, byte dayOfWeek, byte

dayOfMonth, byte month, byte year)

{

// sets time and date data to DS1307

Wire.beginTransmission(DS1307_I2C_ADDRESS);

Wire.write(0); // set next input to start at the seconds register

Wire.write(decToBcd(second)); // set seconds

Wire.write(decToBcd(minute)); // set minutes

Wire.write(decToBcd(hour)); // set hours

Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)

Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)

Wire.write(decToBcd(month)); // set month

Wire.write(decToBcd(year)); // set year (0 to 99)

Wire.endTransmission();

}

void readDS1307time(byte *second,

byte *minute,

byte *hour,

byte *dayOfWeek,

byte *dayOfMonth,

byte *month,

byte *year)

{

Wire.beginTransmission(DS1307_I2C_ADDRESS);

Wire.write(0); // set DS1307 register pointer to 00h

Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

// request seven bytes of data from DS1307 starting from register 00h

*second = bcdToDec(Wire.read() & 0x7f);

*minute = bcdToDec(Wire.read());

*hour = bcdToDec(Wire.read() & 0x3f);

*dayOfWeek = bcdToDec(Wire.read());

*dayOfMonth = bcdToDec(Wire.read());

*month = bcdToDec(Wire.read());

*year = bcdToDec(Wire.read());

}

void checkTime() {

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS1307

readDS1307time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

if(hour 》= 6 && hour 《= 11) {

petFeedMorning = 1;

}

else if (hour 》= 5 && hour 《= 13) {

petFeedMorning = 0;

}

if(hour 》= 17 && hour 《= 21) {

petFeedAfternoon = 1;

}

else if(hour 《= 16 && hour 》= 18) {

petFeedAfternoon = 0;

}

}

void displayTimeSerial()

{

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS1307

readDS1307time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

//Current function prints this on the serial monitor

Serial.print(hour, DEC);

// convert the byte variable to a decimal number when displayed

Serial.print(”:“);

if (minute《10)

{

Serial.print(”0“);

}

Serial.print(minute, DEC);

Serial.print(”:“);

if (second《10)

{

Serial.print(”0“);

}

//Print seconds on serial monitor

Serial.print(second, DEC);

Serial.print(” “);

//Print numerical day of the month on serial monitor

Serial.print(dayOfMonth, DEC);

Serial.print(”/“);

//Print month on serial monitor

Serial.print(month, DEC);

Serial.print(”/“);

//Print year on serial monitor

Serial.print(year, DEC);

Serial.print(” Day of week: “);

//Determine specific day of the week

switch(dayOfWeek){

case 1:

Serial.println(”Sunday“);

break;

case 2:

Serial.println(”Monday“);

break;

case 3:

Serial.println(”Tuesday“);

break;

case 4:

Serial.println(”Wednesday“);

break;

case 5:

Serial.println(”Thursday“);

break;

case 6:

Serial.println(”Friday“);

break;

case 7:

Serial.println(”Saturday“);

break;

}

}

void displayTimeDisplay()

{

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

// retrieve data from DS1307

readDS1307time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

//Current function shows this on the OLED display

//Display

//TODO Millis

/*

currentMillis = millis(); //get the current ”time“ (actually the number of milliseconds since the program started)

if (currentMillis - startMillis 》= period) //test whether the period has elapsed

{

display.clearDisplay();

display.display();

display.setCursor(0,0);

display.setTextSize(2); // Draw 2X-scale text

display.setTextColor(WHITE);

display.print(cm);

display.println(” Millis“);

display.display();

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.

}

*/

//Display distance measured from Ultrasonic sensor on OLED

display.clearDisplay();

display.display();

display.setCursor(0,0);

display.setTextSize(2); // Draw 2X-scale text

display.setTextColor(WHITE);

display.print(cm);

display.println(” cm“);

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(WHITE);

display.println();

//Display hours on OLED

display.print(hour, DEC);

//Converting the byte variable to a decimal number when displayed

display.print(”:“);

if (minute《10)

{

display.print(”0“);

}

//Display minutes on OLED

display.print(minute, DEC);

display.print(”:“);

if (second《10)

{

display.print(”0“);

}

//Display seconds on OLED

display.print(second, DEC);

display.print(” “);

//Between 35 cm (under) and 5 cm (over) feed pet, turn motor CW

//else if(cm 《= 20 && hour 》= 7 && hour 《= 13) {

if(cm 《= 35 && cm 》5) {

display.setCursor(85,25);

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(WHITE);

display.print(”FEEDING“);

}

//Under 5 cm display length, time, day and date

else if(cm 《= 5) {

display.setCursor(85,25);

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(WHITE);

display.print(”DONE“);

}

display.display();

//TODO Millis

//delay(1000);

}

void displayDayDateDisplay()

{

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

//Retrieving data from DS1307

readDS1307time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

//Sending it to the OLED display

//Display

//TODO Millis

//Day

display.clearDisplay();

display.setCursor(0,0);

display.setTextSize(1); // Draw 2X-scale text

display.setTextColor(WHITE);

display.println();

//Determine specific day of the week

switch(dayOfWeek){

case 1:

display.println(”Sunday“);

//display.println();

break;

case 2:

display.println(”Monday“);

break;

case 3:

display.println(”Tuesday“);

break;

case 4:

display.println(”Wednesday“);

break;

case 5:

display.println(”Thursday“);

break;

case 6:

display.println(”Friday“);

break;

case 7:

display.println(”Saturday“);

break;

}

//Date

display.setTextSize(2); // Draw 2X-scale text

display.setTextColor(WHITE);

display.print(dayOfMonth, DEC);

display.print(”/“);

display.print(month, DEC);

display.print(”/“);

display.print(year, DEC);

display.println(” “);

display.display();

//TODO Millis

//delay(500);

}

void ultrasonicTimeout() {

// The sensor is triggered by a HIGH pulse of 10 or more microseconds.

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

/*

//Without Millis

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

*/

currentMillis = millis(); //get the current ”time“ (actually the number of milliseconds since the program started)

if (currentMillis - startMillis 》= period) //test whether the period has elapsed

{

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.

}

// Read the signal from the sensor: a HIGH pulse whose

// duration is the time (in microseconds) from the sending

// of the ping to the reception of its echo off of an object.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);

// Convert the time into a distance

cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343

inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135

Serial.print(inches);

Serial.print(”in, “);

Serial.print(cm);

Serial.print(”cm“);

Serial.println();

//delay(200);

}

void ultrasonic() {

// The sensor is triggered by a HIGH pulse of 10 or more microseconds.

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

/*

//Without Millis

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

*/

currentMillis = millis(); //get the current ”time“ (actually the number of milliseconds since the program started)

if (currentMillis - startMillis 》= period) //test whether the period has elapsed

{

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.

}

// Read the signal from the sensor: a HIGH pulse whose

// duration is the time (in microseconds) from the sending

// of the ping to the reception of its echo off of an object.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);

// Convert the time into a distance

cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343

inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135

Serial.print(inches);

Serial.print(”in, “);

Serial.print(cm);

Serial.print(”cm“);

Serial.println();

}

void stepMotorFeed() {

/*

currentMillis = millis(); //get the current ”time“ (actually the number of milliseconds since the program started)

if (currentMillis - startMillis 》= period) //test whether the period has elapsed

{

//function to turn stepper motor 32 steps left

small_stepperFeed.setSpeed(300); // 200 as max speed?

//ultrasonic();

Steps2TakeFeed = -3200; // Rotate CW

//ultrasonic();

small_stepperFeed.step(Steps2TakeFeed);

startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.

}

*/

//function to turn stepper motor 32 steps left

small_stepperFeed.setSpeed(300); // 200 as max speed?

//ultrasonic();

Steps2TakeFeed = -520; // Rotate CW

//ultrasonic();

small_stepperFeed.step(Steps2TakeFeed);

}

void testdrawlogo() {

display.clearDisplay();

display.drawBitmap(

(display.width() - SCREEN_WIDTH ),

(display.height() - SCREEN_HEIGHT),

myBitmap, SCREEN_WIDTH, SCREEN_HEIGHT, 1);

display.display();

// Invert and restore display, pausing in-between

display.invertDisplay(true);

delay(1000);

display.invertDisplay(false);

delay(8000);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 喂食器
    +關(guān)注

    關(guān)注

    1

    文章

    30

    瀏覽量

    3928
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    從誤觸到精準(zhǔn)感應(yīng):唯創(chuàng)知音用雷達(dá)傳感技術(shù)重新定義寵物智能喂食體驗(yàn)

    養(yǎng)寵物的人都有過(guò)這樣的困擾:自動(dòng)喂食器在沒(méi)有寵物靠近時(shí)莫名啟動(dòng),或者貓咪明明趴在碗邊等待,喂食器卻毫無(wú)反應(yīng)。這看似微小的體驗(yàn)問(wèn)題,背后是整個(gè)
    的頭像 發(fā)表于 03-04 18:05 ?219次閱讀
    從誤觸到精準(zhǔn)感應(yīng):唯創(chuàng)知音用雷達(dá)傳感技術(shù)重新定義<b class='flag-5'>寵物</b>智能<b class='flag-5'>喂食</b>體驗(yàn)

    WT588F02A-16S錄音芯片:寵物喂食器如何通過(guò)語(yǔ)音IC實(shí)現(xiàn)智能化互動(dòng)?

    在現(xiàn)代社會(huì),寵物已成為家庭的重要成員,寵物喂食器作為養(yǎng)護(hù)工具,正逐步融入智能化元素。廣州唯創(chuàng)電子作為領(lǐng)先的語(yǔ)音IC廠家,推出的WT588F02A-16S高品質(zhì)錄音芯片,為寵物
    的頭像 發(fā)表于 02-05 08:51 ?192次閱讀
    WT588F02A-16S錄音芯片:<b class='flag-5'>寵物</b><b class='flag-5'>喂食</b>器如何通過(guò)語(yǔ)音IC實(shí)現(xiàn)智能化互動(dòng)?

    智能養(yǎng)寵新時(shí)代:如何用雷達(dá)“黑科技”破解寵物飲水機(jī)感應(yīng)難題

    當(dāng)代“鏟屎官”對(duì)寵物的愛(ài),早已不止于簡(jiǎn)單喂養(yǎng)。在福州一家寵物科技企業(yè)的產(chǎn)品實(shí)驗(yàn)室里,一臺(tái)看似普通的寵物飲水機(jī)正悄然醞釀著一場(chǎng)技術(shù)革新——當(dāng)寵物
    的頭像 發(fā)表于 01-04 17:33 ?570次閱讀
    智能養(yǎng)寵新時(shí)代:如何用雷達(dá)“黑科技”破解<b class='flag-5'>寵物</b>飲水<b class='flag-5'>機(jī)</b>感應(yīng)難題

    寵物智能喂食器紅外感應(yīng)方案

    寵物智能喂食器紅外感應(yīng)方案 寵物行業(yè)在不知不覺(jué)當(dāng)中已經(jīng)成為了一個(gè)熱門賽道,養(yǎng)寵物的人群越來(lái)越多,甚至一度在小紅書上出現(xiàn)一只貓、一只狗能夠讓不同國(guó)家的用戶在一起產(chǎn)生共鳴與碰撞,作為
    的頭像 發(fā)表于 12-17 17:34 ?1499次閱讀
    <b class='flag-5'>寵物</b>智能<b class='flag-5'>喂食</b>器紅外感應(yīng)方案

    智能喂食器電路板(PCBA)的加工難點(diǎn)與特殊工藝

    隨著寵物經(jīng)濟(jì)的興起,智能寵物喂食器逐漸成為養(yǎng)寵家庭的剛需產(chǎn)品。其核心在于精準(zhǔn)的定時(shí)與定量控制,而這背后的關(guān)鍵技術(shù)就是PCBA加工。 寵物喂食
    的頭像 發(fā)表于 11-11 16:16 ?724次閱讀
    智能<b class='flag-5'>喂食</b>器電路板(PCBA)的加工難點(diǎn)與特殊工藝

    聲音的溫度:WT588F02A-16S錄音芯片如何讓寵物喂食器更懂愛(ài)

    在科技與溫情交融的時(shí)代,廣州唯創(chuàng)電子WT588F02A-16S錄音芯片為寵物喂食器注入"家的聲音",讓愛(ài)與陪伴從未缺席01技術(shù)賦能:智能語(yǔ)音芯片重新定義寵物關(guān)懷1.1大容量存儲(chǔ)
    的頭像 發(fā)表于 10-15 06:32 ?454次閱讀
    聲音的溫度:WT588F02A-16S錄音芯片如何讓<b class='flag-5'>寵物</b><b class='flag-5'>喂食</b>器更懂愛(ài)

    基于RFID技術(shù)設(shè)計(jì)的智能寵物喂食解決方案

    RFID技術(shù)應(yīng)用于寵物管理,通過(guò)電子標(biāo)簽(項(xiàng)圈式或植入式)為寵物建立唯一身份標(biāo)識(shí),結(jié)合自動(dòng)喂食器中的RFID模塊實(shí)現(xiàn)精準(zhǔn)識(shí)別。該系統(tǒng)可有效防止寵物
    的頭像 發(fā)表于 09-11 17:36 ?966次閱讀
    基于RFID技術(shù)設(shè)計(jì)的智能<b class='flag-5'>寵物</b><b class='flag-5'>喂食</b>解決方案

    安信可雷達(dá)模組在寵物喂食器中的應(yīng)用

    近年來(lái),寵物經(jīng)濟(jì)快速增長(zhǎng),智能寵物喂食器作為智能家居的重要細(xì)分領(lǐng)域,市場(chǎng)需求持續(xù)擴(kuò)大。傳統(tǒng)定時(shí)喂食器在實(shí)現(xiàn)基礎(chǔ)的自動(dòng)投喂功能后,用戶對(duì)產(chǎn)品的
    的頭像 發(fā)表于 08-20 15:31 ?837次閱讀

    RFID技術(shù),寵物智能設(shè)備的革命性突破

    基于RFID射頻識(shí)別技術(shù)的新型喂食器能精準(zhǔn)識(shí)別佩戴標(biāo)簽的寵物身份,實(shí)現(xiàn)個(gè)性化投喂。相比傳統(tǒng)設(shè)備,RFID技術(shù)不受光線干擾,識(shí)別準(zhǔn)確率達(dá)99%,且無(wú)需寵物配合。系統(tǒng)可記錄每只寵物的進(jìn)食數(shù)
    的頭像 發(fā)表于 08-05 15:34 ?911次閱讀
    RFID技術(shù),<b class='flag-5'>寵物</b>智能設(shè)備的革命性突破

    涂鴉On-App AI秒級(jí)攔截低質(zhì)量圖片!打造精準(zhǔn)寵物檔案識(shí)別系統(tǒng)

    對(duì)于寵物喂食器、寵物飲水機(jī)等產(chǎn)品來(lái)說(shuō),建立精確的寵物檔案,不僅關(guān)系到正確識(shí)別并記錄寵物的異常行為
    的頭像 發(fā)表于 07-10 18:47 ?1148次閱讀
    涂鴉On-App AI秒級(jí)攔截低質(zhì)量圖片!打造精準(zhǔn)<b class='flag-5'>寵物</b>檔案識(shí)別系統(tǒng)

    廣州唯創(chuàng)電子WT588F02A-16S:讓寵物喂食器“會(huì)說(shuō)話”的智慧芯

    在快節(jié)奏的都市生活中,寵物已成為許多家庭的情感寄托。如何讓愛(ài)寵準(zhǔn)時(shí)吃上飯,即使主人不在身邊?智能喂食器成為解決方案,而廣州唯創(chuàng)電子WT588F02A-16S語(yǔ)音芯片,正為這類產(chǎn)品注入獨(dú)特的“溝通
    的頭像 發(fā)表于 07-04 08:43 ?676次閱讀
    廣州唯創(chuàng)電子WT588F02A-16S:讓<b class='flag-5'>寵物</b><b class='flag-5'>喂食</b>器“會(huì)說(shuō)話”的智慧芯

    安信可雷達(dá)模組在智能寵物喂食器中的應(yīng)用

    隨著智能家居浪潮的推進(jìn),寵物經(jīng)濟(jì)也迎來(lái)了科技化的演進(jìn)。寵物喂食器,從最初的定時(shí)投喂設(shè)備,逐步進(jìn)化為具備自動(dòng)識(shí)別、智能感知、遠(yuǎn)程控制等功能的智能設(shè)備。
    的頭像 發(fā)表于 06-13 13:50 ?923次閱讀

    WTR096語(yǔ)音芯片在寵物喂食器上技術(shù)應(yīng)用方案

    寵物市場(chǎng)近些年迎來(lái)了市場(chǎng)的爆發(fā),隨之而來(lái)的是寵物市場(chǎng)產(chǎn)品創(chuàng)新的爆發(fā)潮,這其中寵物喂食器是很多用戶的剛需。寵物
    的頭像 發(fā)表于 06-10 17:44 ?720次閱讀

    芯資訊|寵物喂食器錄音語(yǔ)音芯片應(yīng)用解析:廣州唯創(chuàng)電子WTR096系列技術(shù)優(yōu)勢(shì)與場(chǎng)景實(shí)踐

    隨著寵物智能家居市場(chǎng)的快速發(fā)展,寵物喂食器從基礎(chǔ)定時(shí)投喂功能向情感化、智能化方向升級(jí)。其中,錄音語(yǔ)音芯片作為實(shí)現(xiàn)人寵互動(dòng)、提升用戶體驗(yàn)的核心組件,成為產(chǎn)品差異化的關(guān)鍵。廣州唯創(chuàng)電子憑借其WTR系列
    的頭像 發(fā)表于 05-15 09:00 ?709次閱讀
    芯資訊|<b class='flag-5'>寵物</b><b class='flag-5'>喂食</b>器錄音語(yǔ)音芯片應(yīng)用解析:廣州唯創(chuàng)電子WTR096系列技術(shù)優(yōu)勢(shì)與場(chǎng)景實(shí)踐

    涂鴉AI多寵識(shí)別方案落地量產(chǎn)!寵物檔案+進(jìn)食記錄全面革新科學(xué)養(yǎng)寵體驗(yàn)

    隨著越來(lái)越多的家庭飼養(yǎng)多只寵物,傳統(tǒng)智能喂食器的單一識(shí)別功能,已難以滿足用戶需求。如何確保每只寵物都能公平進(jìn)食?如何記錄和監(jiān)測(cè)每只寵物的進(jìn)食習(xí)慣和食量?如何分析
    的頭像 發(fā)表于 04-17 18:20 ?1262次閱讀
    涂鴉AI多寵識(shí)別方案落地量產(chǎn)!<b class='flag-5'>寵物</b>檔案+進(jìn)食記錄全面革新科學(xué)養(yǎng)寵體驗(yàn)