
Download Alber M12 user guide
https://drive.google.com/open?id=1I0sWR_9vtMqcL8J0MUaEfms2IAzNnHtl
Spare parts
https://drive.google.com/open?id=1-9YXah7lEwhhQKlQoKgk5Wi0oT-G9M5a

Download Alber M12 user guide
#!/bin/bash
A=""
for i in {1..30}
do
ping -q -c1 192.168.1.$i
if [ $? -eq 0 ]
then
A+="Ok 192.168.1.$i\n"
else
A+="No 192.168.1.$i\n"
fi
done
echo -e "$A"
#include
#define lArm 8
#define rArm 5
#define wheel 4
#define wArm 6
#define turner 7
Servo solkol;
Servo sagkol;
Servo teker;
Servo tekerkol;
Servo donduren;
const int solDugme = 12;
const int sagDugme = 13;
int dtime = 10;
int leftbutton =0;
int rightbutton = 0;
int counter = 0;
void setup() {
pinMode(solDugme, OUTPUT);
pinMode(sagDugme, OUTPUT);
Serial.begin(9600);
}
void loop() {
leftbutton = digitalRead(solDugme);
rightbutton = digitalRead(sagDugme);
if(counter == 0) {
defaultPosition();
}
if(counter == 1000) {
counter = 1;
}
if(rightbutton == HIGH) {
attachedAll();
servoTurn(donduren, dtime, 0);
servoTurn(sagkol, dtime, 165);
servoTurn(solkol, dtime, 165);
servoTurn(teker, dtime, 180);
servoTurn(tekerkol, dtime, 5);
servoTurn(teker, dtime, 0);
servoTurn(sagkol, dtime, 90);
servoTurn(donduren, dtime, 20);
servoTurn(tekerkol, dtime, 50);
servoTurn(solkol, dtime, 90);
servoTurn(sagkol, dtime, 165);
servoTurn(donduren, dtime, 180);
servoTurn(solkol, dtime, 165);
servoTurn(tekerkol, dtime, 90);
servoTurn(donduren, dtime, 0);
Serial.println("Left button pressed");
detachAll();
}
if(leftbutton == HIGH) {
attachedAll();
servoTurn(donduren, dtime, 180);
servoTurn(solkol, dtime, 165);
servoTurn(sagkol, dtime, 165);
servoTurn(teker, dtime, 0);
servoTurn(tekerkol, dtime, 150);
servoTurn(solkol, dtime, 90);
servoTurn(teker, dtime, 180);
servoTurn(donduren, dtime, 160);
servoTurn(sagkol, dtime, 90);
servoTurn(tekerkol, dtime, 90);
servoTurn(donduren, dtime, 0);
servoTurn(sagkol, dtime, 165);
servoTurn(solkol, dtime, 165);
servoTurn(donduren, dtime, 180);
Serial.println("Right button pressed");
detachAll();
}
counter++;
}
void defaultPosition() {
attachedAll();
servoTurn(sagkol, dtime, 15);
servoTurn(solkol, dtime, 15);
servoTurn(tekerkol, dtime, 90);
servoTurn(teker, dtime, 0);
servoTurn(donduren, dtime, 0);
Serial.println("Start");
detachAll();
}
void detachAll() {
if(solkol.attached()) solkol.detach();
if(sagkol.attached()) sagkol.detach();
if(teker.attached()) teker.detach();
if(tekerkol.attached()) tekerkol.detach();
if(donduren.attached()) donduren.detach();
}
void attachedAll() {
if (!solkol.attached()) {
solkol.attach(lArm);
}
if (!sagkol.attached()) {
sagkol.attach(rArm);
}
if(!teker.attached()) {
teker.attach(wheel);
}
if(!tekerkol.attached()) {
tekerkol.attach(wArm);
}
if(!donduren.attached()) {
donduren.attach(turner);
}
}
void servoTurn(Servo v,int d, int angle) {
int sp = v.read();
int diff = angle -sp;
if(diff < 0) {
for(int i=0; i < abs(diff); i++) {
v.write(sp -i);
delay(d);
}
} else {
for(int i=0; i < diff; i++) {
v.write(sp +i);
delay(d);
}
}
}
int xPin = A4; // A0-A5 analog pinlerinden herhangi birine bağlanabilir.
int yPin = A5; // A0-A5 analog pinlerinden herhangi birine bağlanabilir.
int butonPin = 10; // Joystick buton pini arduino bağlantısı (Joystick SW çıkışı)
int xPozisyonu = 0;
int yPozisyonu = 0;
int butonDurum = 0;
int motorLimit = 255;
int halfMotor = int(motorLimit/2.0);
int joystickLimit = 1024;
int halfJoystick = int(joystickLimit / 2.0);
int xDiff =0;
int yDiff =0;
int speed1 = 0;
int speed2 = 0;
int tolerans = 5;
#define BRAKEVCC 0
#define CW 1
#define CCW 2
#define BRAKEGND 3
#define CS_THRESHOLD 100
#define MOTOR_1 0
#define MOTOR_2 1
int usSpeed = 1023; //default motor speed
unsigned short usMotor_Status = BRAKEVCC;
/* VNH2SP30 pin definitions
xxx[0] controls '1' outputs
xxx[1] controls '2' outputs */
int inApin[2] = {7, 4}; // INA: Clockwise input
int inBpin[2] = {8, 9}; // INB: Counter-clockwise input
int pwmpin[2] = {5, 6}; // PWM input
int cspin[2] = {2, 3}; // CS: Current sense ANALOG input
int enpin[2] = {0, 1}; // EN: Status of switches output (Analog pin)
int statpin = 13;
void setup()
{
Serial.begin(9600);
pinMode(statpin, OUTPUT);
// Initialize digital pins as outputs
for (int i=0; i<2; i++)
{
pinMode(inApin[i], OUTPUT);
pinMode(inBpin[i], OUTPUT);
pinMode(pwmpin[i], OUTPUT);
}
// Initialize braked
for (int i=0; i<2; i++)
{
digitalWrite(inApin[i], LOW);
digitalWrite(inBpin[i], LOW);
}
}
void loop()
{
xPozisyonu = analogRead(xPin);
yPozisyonu = analogRead(yPin);
butonDurum = digitalRead(butonPin);
/*
if(butonDurum == 1) {
xPozisyonu = halfJoystick;
yPozisyonu = halfJoystick;
}
*/
xDiff = xPozisyonu - halfJoystick;
yDiff = yPozisyonu - halfJoystick;
xDiff = map(xDiff, 0, halfJoystick, 0, halfMotor);
yDiff = -map(yDiff, 0, halfJoystick, 0, halfMotor);
speed1 = abs(yDiff);
speed2 = abs(abs(yDiff)- abs(xDiff));
Serial.print("---X: ");
Serial.print(xPozisyonu);
Serial.print("|Y: ");
Serial.print(yPozisyonu);
Serial.print("|B: ");
Serial.print(butonDurum);
Serial.print("|xDiff: ");
Serial.print(xDiff);
Serial.print("|yDiff: ");
Serial.print(yDiff);
Serial.print("|S1: ");
Serial.print(speed1);
Serial.print("|S2: ");
Serial.print(speed2);
Serial.print("----\r\n\r");
if(abs(xDiff) < tolerans && abs(yDiff) < tolerans){
Serial.print("sag dur ");
Serial.print("sol dur\r\n\r");
usMotor_Status = BRAKEVCC;
motorGo(MOTOR_1, usMotor_Status, 0);
motorGo(MOTOR_2, usMotor_Status, 0);
}
else if(xDiff == 0 && yDiff > 0) {
Serial.print("sol one ");
Serial.print("sag one\n\r");
usMotor_Status = CW;
motorGo(MOTOR_1, usMotor_Status, speed1);
motorGo(MOTOR_2, usMotor_Status, speed1);
}
else if(xDiff == 0 && yDiff <= 0) {
Serial.print("sol arka ");
Serial.print("sag arka\n\r");
usMotor_Status = CCW;
motorGo(MOTOR_1, usMotor_Status, speed1);
motorGo(MOTOR_2, usMotor_Status, speed1);
}
else if(xDiff > 0 && yDiff == 0) {
Serial.print("sol one ");
Serial.print("sag arka\n\r");
usMotor_Status = CW;
motorGo(MOTOR_1, usMotor_Status, speed1);
usMotor_Status = CCW;
motorGo(MOTOR_2, usMotor_Status, speed2);
}
else if(xDiff <= 0 && yDiff == 0) {
Serial.print("sol arka ");
Serial.print("sag one\n\r");
usMotor_Status = CCW;
motorGo(MOTOR_1, usMotor_Status, speed1);
usMotor_Status = CW;
motorGo(MOTOR_2, usMotor_Status, speed2);
}
else if(xDiff > 0 && yDiff > 0) {
Serial.print("yon : Front right");
Serial.print("sol one hizli ");
Serial.print("sag one yavas\n\r");
usMotor_Status = CW;
motorGo(MOTOR_1, usMotor_Status, speed1);
motorGo(MOTOR_2, usMotor_Status, speed2);
}
else if(xDiff < 0 && yDiff < 0) {
Serial.print("yon : back left ");
Serial.print("sol arka yavas ");
Serial.print("sag arka hizli\n\r");
usMotor_Status = CCW;
motorGo(MOTOR_1, usMotor_Status, speed2);
motorGo(MOTOR_2, usMotor_Status, speed1);
}
else if(xDiff > 0 && yDiff < 0) {
Serial.print("yon : back right ");
Serial.print("sol arka hizli ");
Serial.print("sag arka yavas\n\r");
usMotor_Status = CCW;
motorGo(MOTOR_1, usMotor_Status, speed1);
motorGo(MOTOR_2, usMotor_Status, speed2);
}
else if(xDiff < 0 && yDiff > 0) {
Serial.print("yon : Front left ");
Serial.print("sol one yavas");
Serial.print("sag one hizli\n\r");
usMotor_Status = CW;
motorGo(MOTOR_1, usMotor_Status, speed2);
motorGo(MOTOR_2, usMotor_Status, speed1);
}
else {
Serial.println("Anlamsiz");
}
if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) {
Serial.println("Stat pin activ");
digitalWrite(statpin, HIGH);
}
}
void motorOff(int motor)
{
// Initialize braked
for (int i=0; i<2; i++)
{
digitalWrite(inApin[i], LOW);
digitalWrite(inBpin[i], LOW);
}
analogWrite(pwmpin[motor], 0);
}
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
{
if (motor <= 1)
{
if (direct <=4)
{
// Set inA[motor]
if (direct <=1)
digitalWrite(inApin[motor], HIGH);
else
digitalWrite(inApin[motor], LOW);
// Set inB[motor]
if ((direct==0)||(direct==2))
digitalWrite(inBpin[motor], HIGH);
else
digitalWrite(inBpin[motor], LOW);
analogWrite(pwmpin[motor], pwm);
}
}
}
#include
#include
#include
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
#define RELAY1 0
#define RELAY2 3
#define RELAY3 7
#define RELAY4 12
DHT dht(DHTPIN, DHTTYPE);
static PCD8544 lcd = PCD8544(8, 9, 10, 11, 4);
Servo myservo;
Servo myservo2;
int pos1 = 0;
int pos2 = 1;
int temp = 0;
int Button=13;
int speakerPin = 12;
float temp1 = 38.4;
float hum1 = 60.0;
float temp2 = 38.7;
float hum2 = 70.0;
float deftemp = temp1;
float defhum = hum1;
int r1,rx1 =0;
int r2,rx2 =0;
int r3,rx3 =0;
int tAlert= 0;
int hAlert = 0;
void setup()
{
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
//pinMode(RELAY4, OUTPUT);
myservo.attach(5);
myservo2.attach(6);
lcd.begin(84, 48);
dht.begin();
Serial.begin(9600);
lcd.setCursor(10,0);
lcd.print("Sicaklik: ");
lcd.setCursor(10,4);
lcd.print("Nem:");
pinMode(Button, INPUT);
pinMode (speakerPin, OUTPUT);
}
void loop()
{
Serial.println("Start loop");
Serial.print("D Temp: ");Serial.println(deftemp);
Serial.print("D Hum: ");Serial.println(defhum);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
alert(255, 1500, "Sensor", "Error");
return;
}
screen(h, t);
// button set
if(digitalRead(Button)==LOW)
{
if(deftemp == temp1) {
deftemp = temp2;
defhum = hum2;
} else if(deftemp == temp2) {
deftemp = temp1;
defhum = hum1;
}
Serial.print("New Temp: ");Serial.println(deftemp);
Serial.print("New Hum: ");Serial.println(defhum);
}
// relay control
if(h < defhum && t < deftemp) {
r1= 0;//fan
r2= 1;//lamba
r3= 1;//nem
tAlert++;
hAlert++;
Serial.println("Sicaklik Yetersiz Lamba Acik, Nem Yetersiz Nem Acik, Fan kapali");
}
else if(h < defhum && t > deftemp) {
r1= 1;
r2= 0;
r3= 1;
tAlert++;
Serial.println("Sicaklik Fazla Lamba Kapali, Nem Yetersiz Nem Acik, fan acik");
}
else if(h > defhum && t < deftemp) {
r1= 0;
r2= 1;
r3= 0;
hAlert++;
Serial.println("Sicaklik Az Lamba Acik, Nem Fazla Nem Kapali , Fan Kapali");
}
else{
r1= 1;
r2= 0;
r3= 0;
hAlert = 0;
tAlert = 0;
Serial.println("Sicaklik Yeterli Lamba Kapali, Nem Yeterli Nem Kapali,fan acik");
}
if(r1 != rx1 && r1 == 1 ) {
digitalWrite(RELAY1,HIGH);
Serial.println("Humidty Relay 1 open");
}else if(r1 != rx1 && r1 == 0 ) {
digitalWrite(RELAY1,LOW);
Serial.println("Humidty Relay 1 close");
}
rx1 =r1;
if(r2 != rx2 && r2 == 1 ) {
digitalWrite(RELAY2,HIGH);
Serial.println("Temperature Relay 2 open");
}else if(r2 != rx2 && r2 == 0 ) {
digitalWrite(RELAY2,LOW);
Serial.println("Temperature Relay 2 close");
}
rx2 =r2;
if(r3 != rx3 && r3 == 1 ) {
digitalWrite(RELAY3,HIGH);
Serial.println("Fan Relay 3 open");
}else if(r3 != rx3 && r3 == 0 ) {
digitalWrite(RELAY3,LOW);
Serial.println("Fan Relay 3 close");
}
rx3 =r3;
if(tAlert == 500) {
alert(255, 5000, "Temperature", "Error");
tAlert= 0;
}
if(hAlert == 500) {
alert(255, 10000, "Humidty", "Error");
hAlert= 0;
}
//servo
if(pos2 ==0 || pos2==180) {
temp= pos1;
pos1 = pos2;
pos2 = temp;
}
else if(pos2 > pos1) {
pos1 = pos2;
pos2++;
}
else {
pos1 = pos2;
pos2--;
}
myservo.write(pos1);
myservo2.write(pos1);
Serial.print("Servo position :");
Serial.println(pos1);
}
void alert(int v, int d, char mystr[], char mystr2[]) {
writeScreen(mystr, mystr2);
for(int i=0;i