arduino与android蓝牙通信

Arduino与android蓝牙通信。在做一个Arduino的项目,在Arduino的板子上装有温度传感器,然后希望通过蓝牙实时传输到android,请问怎么实现?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
arduino如何读取蓝牙RSSI信号强度
arduino如何读取蓝牙RSSI信号强度,之后换算为0--1023的数值,通过蓝牙传至手机。
c#怎么和arduino上的蓝牙进行通信
我想让pc给我的小机器人发消息。我买了个蓝牙适配器和机器人上的蓝牙进行了连接,蓝牙配对成功后 有两个串口, 然后我尝试通过c#的SerialPorts和机器人连接,但失败了,两个都试了了下,报的错误是没找到。求解决方法 这是我的代码 ![图片说明](https://img-ask.csdn.net/upload/201712/11/1512985057_495975.png) ![图片说明](https://img-ask.csdn.net/upload/201712/11/1512984932_778324.png) 输出里也有COM21,但报错 ![图片说明](https://img-ask.csdn.net/upload/201712/11/1512984994_998124.png)
新人求解:Ardunio蓝牙模块:为什么我的得到的结果是这样子??
我用的Arduino UNO,蓝牙模块HC-06。 Arduino TX接蓝牙RX, Arduino RX接蓝牙TX。 Arduino 3.3v接蓝牙VCC, Arduino GND接蓝牙GND。 我的代码: void setup() { Serial.begin(9600); } void loop() { while(Serial.available()) { char message=Serial.read(); Serial.print(message); delay(2); } } 我在手机上输入的分别是:hello world、we are champion、I Love You、WDNMD、 hello world、we are champion、I Love You、WDNMD. 在串口看到的就是这样的(图),想问一下大神为什么会这样,要如何解决呢???![图片说明](https://img-ask.csdn.net/upload/201911/13/1573657816_273913.png)
Arduino 串行口通信死机
``` int servo1Pin=3; // 右肩膀控制的舵机 int servo2Pin=5; // 右胳膊控制的舵机 int servo3Pin=6; // 左手上下控制的舵机 Y int servo4Pin=9; // 左手左右控制的舵机 X int servo5Pin=10; // 左手抓握控制机械臂 int pulse1=1700; int pulse2=1600; int pulse3=1450; int pulse4=1700; int pulse5=500; unsigned long previousMillis=0; //起始时间 long interval=20; //20ms //初始位置 int angle[5]={190,190,190,190,280}; int temp[15]; /* int angle1=190; int angle2=190; int angle3=190; int angle4=190; int angle5=190; */ char stroke; //Serial接收标志位 int i=0; int flag=0; void setup() { // put your setup code here, to run once: pinMode(servo1Pin,OUTPUT); pinMode(servo2Pin,OUTPUT); pinMode(servo3Pin,OUTPUT); pinMode(servo4Pin,OUTPUT); pinMode(servo5Pin,OUTPUT); Serial.begin(9600); //开启Serial } void loop() { // put your main code here, to run repeatedly: if(Serial.available()>0) { stroke=Serial.read(); Serial.println(stroke); delay(20); if(stroke=='s') //起始标志为s { for(int i=0;i<5;i++) { temp[i]=Serial.read(); temp[i+1]=Serial.read(); temp[i+2]=Serial.read(); angle[i]= (temp[i]-48)*100+(temp[i+1]-48)*10+(temp[i+2]-48)*1; Serial.println(angle[i]); } } } for(int j=0;j<4;j++) { if(angle[j]>280) { Serial.println("太大了"); angle[j]=280; } if(angle[j]<100) { angle[j]=100;} } if(angle[4]==280) { pulse5=1000; } if(angle[4]==100) { pulse5=500; } /* for(int k=0;k<5;k++) { Serial.println(angle[k]); } */ pulse1=(int)map(angle[0],100,280,850,2600); pulse2=(int)map(angle[1],100,280,2400,800); pulse3=(int)map(angle[2],100,280,400,2500); pulse4=(int)map(angle[3],100,280,800,2600); //pulse5=(int)map(angle[4],100,280,500,2500); unsigned long currentMillis=millis(); if(currentMillis-previousMillis>interval) { previousMillis=currentMillis; updateServo(servo1Pin,pulse1); updateServo(servo2Pin,pulse2); updateServo(servo3Pin,pulse3); updateServo(servo4Pin,pulse4); updateServo(servo5Pin,pulse5); } } void updateServo(int pin,int pulse) { digitalWrite(pin,HIGH); delayMicroseconds(pulse); digitalWrite(pin,LOW); } ``` 我用C#做上位机与arduino做了一个机械臂系统 C#串行口发送数据 在刚运行的时候arduino运行十分流畅 但是过大概两三分钟 arduino就会卡死 且Rx Tx的灯都变成常亮而不是正常通信的时候的闪烁状态了 我是用arduino控制舵机 舵机单独供电 arduino USB供电 没有单独9V供电 通过commonitor监视当arduino死机的时候 C#发送数据正常 且降低发送频率运行时长会增加 但不会超过五分钟 具体该如何解决 arduino的代码是将C#数据转为int 并驱动舵机
小白求教Arduino yun实例
刚学Arduino ,想要请问下Arduino yun实现与P C间的通信有实例吗?Arduino和Arduino yub间的区别是什么呢?希望可以分享下谢谢
关于arduino单片机串口通信的问题
我在做一个PC与UNO交互的小程序,大概就是PC发送数据到UNO,通过单片机处理后再返送PC,其中用到了串口通讯。 我的loop环节一开始是这样的 while(Serial.read()!='k'){} 直到接收到'k'才继续执行,PC端对应一个发送字符k的操作 每次刚点烧录,程序能正常运行。 把USB拔了再插上,就一直卡在这里了。。。。 重点就是,刚烧录之后可以正常运行,重新插电就GG PC端用的是windowsAPI,用CreatFile等等实现的对串口的操作 求指点。。。 void setup() { pinMode(8, OUTPUT); Serial.begin(9600); while(Serial.read()>=0){} } void loop() { while(Serial.read()!='k'){} 这是程序的开始部分
Arduino通过ESP8266怎么把串口数据发送给服务器在Mysql数据库显示?
Arduino通过ESP8266怎么把串口数据发送给服务器在Mysql数据库显示? 求代码!万分感谢!这个问题困扰小白很久了!
用arduino实现温湿度传感器dht11,求大佬帮我看看代码,怎样写才能实现读取传感器信号?
``` int DHTpin=2; byte dat[5]; //------------------------------------------------------ byte read_data() { byte data; for(int i=0;i<8;i++) { if(digitalRead(DHTpin)==LOW) { while(digitalRead(DHTpin)==LOW) ; delayMicroseconds(30); if(digitalRead(DHTpin)==HIGH) data|=(1<<(7-1)); while(digitalRead(DHTpin)==HIGH) ; } } return data; } //------------------------------------------------------ void start_test(){ digitalWrite(DHTpin,LOW); delay(30); digitalWrite(DHTpin,HIGH); delayMicroseconds(40); pinMode(DHTpin,INPUT); while(digitalRead(DHTpin)==LOW) ; delayMicroseconds(80); for(int i=0;i<5;i++) dat[i]=read_data(); pinMode(DHTpin,OUTPUT); digitalWrite(DHTpin,HIGH); } void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(DHTpin,OUTPUT); } void loop() { // put your main code here, to run repeatedly: start_test(); for(int i=0;i<5;i++) { Serial.print("dat["); Serial.print(i); Serial.print("]="); Serial.print(dat[i]); Serial.print(' '); } delay(700); } ``` 为什么串口监视器上一直显示0![图片说明](https://img-ask.csdn.net/upload/202001/11/1578731026_362333.png) read_data()里的代码该怎么写?
Android接收arduino数据来控制打电话报错
用了android官方BLE的demo可以成功接收Arduino101板子传入的数据; 在原来的程序中直接加入打电话的代码,可以实现 ``` private void displayData(String data) { if (data != null) { mDataDisplay.setText(data); } button = (Button) findViewById(R.id.button); number=data; button.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:000000")); if (ActivityCompat.checkSelfPermission(DeviceControlActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { return; } startActivity(callIntent); } }); ``` ———————————————————————————————— 但是如果利用接收到的数据,就出现报错No Activity found to handle Intent { act=android.intent.action.CALL } ``` private void displayData(String data) { if (data != null) { mDataDisplay.setText(data); } button = (Button) findViewById(R.id.button); number=data; button.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { Intent callIntent = new Intent(Intent.ACTION_CALL); if(number.equals("00")) { callIntent.setData(Uri.parse("tel:000000")); }else if(number.equals("01")) { callIntent.setData(Uri.parse("tel:000001")); }else if(number.equals("02")) { callIntent.setData(Uri.parse("tel:000002")); }else if(number.equals("03")) { callIntent.setData(Uri.parse("tel:000003")); }else if(number.equals("04")) { callIntent.setData(Uri.parse("tel:000004")); }else if(number.equals("05")) { callIntent.setData(Uri.parse("tel:000005")); } if (ActivityCompat.checkSelfPermission(DeviceControlActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { return; } startActivity(callIntent); } }); ``` 日志: ``` 04-19 21:06:06.176 28375-28430/com.example.bledemo D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=98:4F:EE:0F:C5:A3, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=[0000180f-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData={}, mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=BatteryMonitorSketch], mRssi=-35, mTimestampNanos=613094916898376} 04-19 21:06:06.196 28375-28399/com.example.bledemo D/ScanRecord: parseFromBytes 04-19 21:06:06.196 28375-28399/com.example.bledemo D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=98:4F:EE:0F:C5:A3, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=[0000180f-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData={}, mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=BatteryMonitorSketch], mRssi=-35, mTimestampNanos=613094940227543} 04-19 21:06:06.221 28375-28399/com.example.bledemo D/ScanRecord: parseFromBytes 04-19 21:06:06.221 28375-28399/com.example.bledemo D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=98:4F:EE:0F:C5:A3, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=[0000180f-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData={}, mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=BatteryMonitorSketch], mRssi=-35, mTimestampNanos=613094962124876} 04-19 21:06:06.246 28375-28375/com.example.bledemo I/System.out: ==position==0 04-19 21:06:06.246 28375-28375/com.example.bledemo D/BluetoothAdapter: stopLeScan() 04-19 21:06:06.251 28375-28375/com.example.bledemo I/Timeline: Timeline: Activity_launch_request id:com.example.bledemo time:163428963 04-19 21:06:06.266 28375-28375/com.example.bledemo D/BluetoothAdapter: stopLeScan() 04-19 21:06:06.266 28375-28375/com.example.bledemo D/BluetoothAdapter: scan not started yet 04-19 21:06:06.341 28375-28375/com.example.bledemo D/AbsListView: Get MotionRecognitionManager 04-19 21:06:06.351 28375-28375/com.example.bledemo D/Activity: performCreate Call secproduct feature valuefalse 04-19 21:06:06.351 28375-28375/com.example.bledemo D/Activity: performCreate Call debug elastic valuetrue 04-19 21:06:06.521 28375-28375/com.example.bledemo D/BluetoothGatt: connect() - device: 98:4F:EE:0F:C5:A3, auto: false 04-19 21:06:06.521 28375-28375/com.example.bledemo D/BluetoothGatt: registerApp() 04-19 21:06:06.521 28375-28375/com.example.bledemo D/BluetoothGatt: registerApp() - UUID=fd636193-9b1f-4767-b799-d2eae15bcfc0 04-19 21:06:06.561 28375-28375/com.example.bledemo D/BluetoothLeService: Trying to create a new connection. 04-19 21:06:06.561 28375-28399/com.example.bledemo D/BluetoothGatt: onClientRegistered() - status=0 clientIf=7 04-19 21:06:06.671 28375-28388/com.example.bledemo D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=7 device=98:4F:EE:0F:C5:A3 04-19 21:06:06.676 28375-28375/com.example.bledemo I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@19af1c7c time:163429389 04-19 21:06:06.681 28375-28388/com.example.bledemo I/BluetoothLeService: Connected to GATT server. 04-19 21:06:06.681 28375-28388/com.example.bledemo D/BluetoothGatt: discoverServices() - device: 98:4F:EE:0F:C5:A3 04-19 21:06:06.686 28375-28388/com.example.bledemo I/BluetoothLeService: Attempting to start service discovery:true 04-19 21:06:06.691 28375-28388/com.example.bledemo D/BluetoothGatt: onSearchComplete() = Device=98:4F:EE:0F:C5:A3 Status=0 04-19 21:06:06.941 28375-28375/com.example.bledemo V/ActivityThread: updateVisibility : ActivityRecord{3970b103 token=android.os.BinderProxy@21371bc6 {com.example.bledemo/com.example.bledemo.DeviceScanActivity}} show : false 04-19 21:06:08.126 28375-28375/com.example.bledemo D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN 04-19 21:06:08.651 28375-28375/com.example.bledemo D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN 04-19 21:06:08.796 28375-28375/com.example.bledemo D/BluetoothGatt: setCharacteristicNotification() - uuid: 00002a19-0000-1000-8000-00805f9b34fb enable: true 04-19 21:06:10.286 28375-28375/com.example.bledemo D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN 04-19 21:06:10.366 28375-28375/com.example.bledemo D/Instrumentation: checkStartActivityResult :Intent { act=android.intent.action.CALL } 04-19 21:06:10.366 28375-28375/com.example.bledemo D/Instrumentation: checkStartActivityResult inent is instance of inent: 04-19 21:06:10.366 28375-28375/com.example.bledemo D/AndroidRuntime: Shutting down VM 04-19 21:06:10.371 28375-28375/com.example.bledemo E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.bledemo, PID: 28375 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL } at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1801) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1499) at android.app.Activity.startActivityForResult(Activity.java:3942) at android.app.Activity.startActivityForResult(Activity.java:3889) at android.app.Activity.startActivity(Activity.java:4213) at android.app.Activity.startActivity(Activity.java:4181) at com.example.bledemo.DeviceControlActivity$5.onClick(DeviceControlActivity.java:299) at android.view.View.performClick(View.java:5184) at android.view.View$PerformClick.run(View.java:20910) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5942) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) ```
Arduino智能小车功能间如何进行蓝牙遥控选择转换
做了一辆Arduino的智能车,其功能目前是:四路循迹行驶,同时在行驶过程中遇到障碍物进行规避(超声波避障模块),在把循迹用黑胶布遮住使它四个传感器均检测不到时候可以进行蓝牙遥控,现在我想做成使用蓝牙来远程选择自动还是手动(自动循迹加超声波避障/蓝牙纯手动遥控),附上代码如下,求大神帮我解决下。 ``` int Left_motor_back=6; //左电机后退(IN1) int Left_motor_go=9; //左电机前进(IN2) int Right_motor_go=10; // 右电机前进(IN3) int Right_motor_back=11; // 右电机后退(IN4) const int SensorRight_1 = 7;//右外侧 const int SensorRight = 5; //右循迹红外传感器(P3.2 OUT1) const int SensorLeft = 4; //左循迹红外传感器(P3.3 OUT2) const int SensorLeft_1 = 2;//左外侧 //超声波测量数值定义 int Front_Distance = 0; int Left_Distance = 0; int Right_Distance = 0; int SL; //左循迹红外传感器状态 int SL_1; int SR; //右循迹红外传感器状态 int SR_1; int Echo = A0; // Echo回声脚(P2.0) int Trig = A1 ; // Trig 触发脚(P2.1) int Distance = 0; int servopin= 12;//设置舵机驱动脚到数字口2 int myangle;//定义角度变量 int pulsewidth;//定义脉宽变量 int val; const String GO = "1";//蓝牙遥控器发送信息代码定义 const String BACK = "2"; const String LEFT = "3"; const String RIGHT = "4"; const String STOP = "0"; const String SMALLLEFT = "5"; const String SMALLRIGHT = "6"; const String SLEFT = "7"; void setup() { Serial.begin(9600); // 初始化串口 //初始化电机驱动IO为输出方式 pinMode(Left_motor_go,OUTPUT); // PIN 6 (PWM) //初始化电机驱动IO为输出方式 pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM) pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM) pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM) pinMode(SensorRight, INPUT); //定义右循迹红外传感器为输入 pinMode(SensorLeft, INPUT); //定义左循迹红外传感器为输入 pinMode(SensorRight_1, INPUT); //定义右红外传感器为输入 pinMode(SensorLeft_1, INPUT); //定义左红外传感器为输入 //初始化超声波引脚 pinMode(Echo, INPUT); // 定义超声波输入脚 pinMode(Trig, OUTPUT); // 定义超声波输出脚 pinMode(servopin,OUTPUT);//设定舵机接口为输出接口 } //=======================智能小车的基本动作========================= // 前进 void run(int time) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,60);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Right_motor_back,0); digitalWrite(Left_motor_go,HIGH); // 左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,60);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Left_motor_back,0); delay(time * 10); //执行时间,可以调整 } //void brake(int time) //刹车,停车 void brake(int time) { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); delay(time * 10);//执行时间,可以调整 } //void brake(int time) //长时间刹车,停车 void brake_1() { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); //delay(time * 100);//执行时间,可以调整 } //void left(int time) //左转(左轮不动,右轮前进) void left(int time) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,110); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void spin_left(int time) void sleft(int time) //左转(左轮后退,右轮前进) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,110); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,110);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void right(int time) //右转(右轮不动,左轮前进) void right(int time) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH);//左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,110); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void spin_right(int time) void sright(int time) //右转(右轮后退,左轮前进) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,110);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH);//左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,110); analogWrite(Left_motor_back,0);//PWM比例0~255调速 // delay(time * 10); //执行时间,可以调整 } //void back(int time) //后退 void back(int time) { digitalWrite(Right_motor_go,LOW); //右轮后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,100);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,100);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //========================================================== float Distance_test() // 量出前方距离 { digitalWrite(Trig, LOW); // 给触发脚低电平2μs delayMicroseconds(2); digitalWrite(Trig, HIGH); // 给触发脚高电平10μs,这里至少是10μs delayMicroseconds(10); digitalWrite(Trig, LOW); // 持续给触发脚低电 float Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒) Fdistance= Fdistance/58; //为什么除以58等于厘米, Y米=(X秒*344)/2 // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 //Serial.print("Distance:"); //输出距离(单位:厘米) //Serial.println(Fdistance); //显示距离 //Distance = Fdistance; return Fdistance; } void servopulse(int servopin,int myangle)/*定义一个脉冲函数,用来模拟方式产生PWM值*/ { pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值 digitalWrite(servopin,HIGH);//将舵机接口电平置高 delayMicroseconds(pulsewidth);//延时脉宽值的微秒数 digitalWrite(servopin,LOW);//将舵机接口电平置低 delay(20-pulsewidth/1000);//延时周期内剩余时间 } void front_detection() { //此处循环次数减少,为了增加小车遇到障碍物的反应速度 for(int i=0;i<=5;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,95);//模拟产生PWM } Front_Distance = Distance_test(); //Serial.print("Front_Distance:"); //输出距离(单位:厘米) // Serial.println(Front_Distance); //显示距离 //Distance_display(Front_Distance); } void left_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,175);//模拟产生PWM } Left_Distance = Distance_test(); //Serial.print("Left_Distance:"); //输出距离(单位:厘米) //Serial.println(Left_Distance); //显示距离 } void right_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,5);//模拟产生PWM } Right_Distance = Distance_test(); //Serial.print("Right_Distance:"); //输出距离(单位:厘米) //Serial.println(Right_Distance); //显示距离 } String readTtl() { String comdata = ""; while (Serial.available()) { comdata += char(Serial.read()); delay(2); } return comdata; } void loop() { while(1) { { //有信号为LOW 没有信号为HIGH SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L3亮;没信号表明压在黑线上,车子底板上L3灭 SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭 SL_1 = digitalRead(SensorLeft_1); SR_1 = digitalRead(SensorRight_1); if (SL == LOW&&SR==LOW&&SL_1==LOW && SR_1== LOW) run(10); //调用前进函数 else if (SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== LOW ) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转 left(30); else if(SL_1==LOW && SL== HIGH&&SR == LOW &&SR_1==LOW) right(30); else if(SL_1==HIGH && SL == LOW && SR==LOW && SR_1==LOW) sright(30); else if(SL_1==LOW && SL == LOW && SR==LOW && SR_1==HIGH) // 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转 sleft(30); else if(SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== HIGH) left(30); else if(SL_1==HIGH && SL== HIGH&&SR == LOW &&SR_1==LOW) right(30); //else //停止 // brake_1(); } front_detection();//测量前方距离 if(Front_Distance < 20)//数值为碰到障碍物的距离,可以按实际情况设置 { brake(50); back(60); brake(100); left_detection();//测量左边距障碍物距离 right_detection();//测量右边距障碍物距离 brake(10); if((Left_Distance < 40 ) &&( Right_Distance < 40 ))//当左右两侧均有障碍物靠得比较近 sleft(180);//旋转掉头根据具体情况调整执行时间 else if(Left_Distance > Right_Distance)//左边比右边空旷 { left(60);//左转 brake(10);//刹车,稳定方向 } else if(Left_Distance < Right_Distance)//右边比左边空旷 {right(60);//右转 brake(10);//刹车,再次判定 } else run(1);//无障碍物,直行 } // 蓝牙主代码 String s = readTtl(); if (s == GO ) run(70);//如果按GO键,小车前进,直到按STOP键停止 else if (s == LEFT ) left(65); else if (s == STOP ) brake_1(); else if (s == RIGHT ) right(70); else if (s == BACK ) back(65); else if (s == SMALLLEFT ) left(20); else if (s == SMALLRIGHT) right(20); else if (s == SLEFT) sleft(90); } } ```
arduino如何接受数字传感器的信号
学习arduino遇到点疑惑,请大家帮忙指点下怎么办? arduino使用dht22温湿度传感器按照参考教程需要导入一个头文件dht,使用时要调用相关函数,读出具体的温湿度,从而打印输出。 但是很多传感器并非为arduino设计,但是可以兼容使用。没有现成的头文件,这种情况怎么arduino如何接受数字信号呢? 我查了很多资料,只能查到数字引脚可以通过判断low还是high来输出0或者1,但是像温湿度传感器这样的,输出内容不会这么简单,至少是整数或者是小数,因此怎么样才能让arduino接收到数字传感器所发出的8bits数据呢 因为是初学者,对于传感器所说的Data bits不理解,这个8bits的到底能表达一个多大数据量呢,看起来不应该只是0和1,感觉应该更大一点
arduino基于红外线控制
例如红外遥控小车,红外空调遥控器,遥控器上的按键对应着一个功能,如何通过模式切换使相同按键拥有两个不同的功能 下面的代码是基于红外线控制LCD1602 设置了两个功能按键,输入文字和输入数字,声明和调用了两个函数但是无法运行,希望大家能给出建议 ``` #include<IRremote.h> #include <IRremoteInt.h> #include <LiquidCrystal.h> LiquidCrystal lcd(11,10,9,8,7,6); #define RECV_PIN 13 IRrecv irrecv(RECV_PIN); decode_results results; void words(); void number(); void setup() { Serial.begin(9600); lcd.begin(16,2); Serial.println("Enabling IRin"); irrecv.enableIRIn(); Serial.println("Enabled IRin"); lcd.clear(); lcd.setCursor(0,0); } void words() { if (irrecv.decode(&results)) { if(results.value==0xFF30CF) {lcd.setCursor(2,0);lcd.print("Hello World!");delay(2000);lcd.clear();} else if(results.value==0xFF18E7) {lcd.setCursor(3,0);lcd.print("Tian Ji");delay(2000);lcd.clear();} else if(results.value==0xFF7A85) {lcd.setCursor(3,0);lcd.print("Da Xue");delay(2000);lcd.clear();} else if(results.value==0xFF10EF) {lcd.setCursor(3,0);lcd.print("Ren Ai");delay(2000);lcd.clear();} else if(results.value==0xFF38C7) {lcd.setCursor(3,0);lcd.print("Xue Yuan");delay(2000);lcd.clear();} else if(results.value==0xFF5AA5) {lcd.setCursor(3,0);lcd.print("Welcome!");delay(2000);lcd.clear();} else if(results.value==0xFF42BD) {lcd.setCursor(3,0);lcd.print("Ni Hao!");delay(2000);lcd.clear();} else if(results.value==0xFF4AB5) {lcd.write("Nice to meet you");delay(2000);lcd.clear();} else if(results.value==0xFF52AD) {lcd.setCursor(4,0);lcd.print("Bye-bye");delay(2000);lcd.clear();} } } void number() { lcd.leftToRight(); if(irrecv.decode(&results)) { if(results.value==0xFF30CF) {lcd.print("1");delay(100);} else if(results.value==0xFF18E7) {lcd.print("2");delay(100);} else if(results.value==0xFF7A85) {lcd.print("3");delay(100);} else if(results.value==0xFF10EF) {lcd.print("4");delay(100);} else if(results.value==0xFF38C7) {lcd.print("5");delay(100);} else if(results.value==0xFF5AA5) {lcd.print("6");delay(100);} else if(results.value==0xFF42BD) {lcd.print("7");delay(100);} else if(results.value==0xFF4AB5) {lcd.print("8");delay(100);} else if(results.value==0xFF52AD) {lcd.print("9");delay(100);} else if ( results.value==0xFF6897) {lcd.print("0");delay(100);} } } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (results.value==0xFFE21D) {delay(1000);lcd.clear();lcd.print("screen opening...");delay(1000);lcd.clear();} else if (results.value==0xFFA25D) {lcd.setCursor(3,0);lcd.print("screen off");delay(1000);lcd.clear();} else if (results.value==0xFF629D) {lcd.clear();} else if (results.value==0xFF22DD) {lcd.setCursor(3,0);lcd.print("Input words:");delay(1000);lcd.clear();words();} else if (results.value==0xFF02FD) {lcd.setCursor(3,0);lcd.print("Input number:");delay(1000);lcd.clear();number();} irrecv.resume(); } delay(1000); } ``` ```
蓝牙多activity运作解决方法
我想让蓝牙在不同activity接收arduino资料及传送 不希望在切换时要重新连接 有没有大神能提供范例 让小弟我参考参考
arduino 红外遥控器设置功能按键
给红外遥控器设置两个功能按键,文字输入和数字输入,按下后再去按1-9按键可在LCD1602上显示数字或设置好的一串字母,红外遥控模块和LCD显示模块都没有问题,只是判断按键后执行语句中无法再次进行判断,功能键的功能无法执行,不知道有什么方法可以解决,代码如下,球球各位大神给指点一下 ``` #include <IRremote.h> #include <IRremoteInt.h> #include <LiquidCrystal.h> LiquidCrystal lcd(11,10,9,8,7,6); #define RECV_PIN 13 IRrecv irrecv(RECV_PIN); decode_results results; void words(); void number(); void setup() { Serial.begin(9600); lcd.begin(16,2); Serial.println("Enabling IRin"); irrecv.enableIRIn(); Serial.println("Enabled IRin"); lcd.clear(); lcd.setCursor(0,0); } void words() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if(results.value==0xFF30CF) {lcd.setCursor(2,0);lcd.print("Hello World!");delay(2000);lcd.clear();} else if(results.value==0xFF18E7) {lcd.setCursor(3,0);lcd.print("Tian Ji");delay(2000);lcd.clear();} else if(results.value==0xFF7A85) {lcd.setCursor(3,0);lcd.print("Da Xue");delay(2000);lcd.clear();} else if(results.value==0xFF10EF) {lcd.setCursor(3,0);lcd.print("Ren Ai");delay(2000);lcd.clear();} else if(results.value==0xFF38C7) {lcd.setCursor(3,0);lcd.print("Xue Yuan");delay(2000);lcd.clear();} else if(results.value==0xFF5AA5) {lcd.setCursor(3,0);lcd.print("Welcome!");delay(2000);lcd.clear();} else if(results.value==0xFF42BD) {lcd.setCursor(3,0);lcd.print("Ni Hao!");delay(2000);lcd.clear();} else if(results.value==0xFF4AB5) {lcd.write("Nice to meet you");delay(2000);lcd.clear();} else if(results.value==0xFF52AD) {lcd.setCursor(4,0);lcd.print("Bye-bye");delay(2000);lcd.clear();} } } void number() { lcd.leftToRight(); if(irrecv.decode(&results)) { Serial.println(results.value, HEX); if(results.value==0xFF30CF) {lcd.print("1");delay(100);} else if(results.value==0xFF18E7) {lcd.print("2");delay(100);} else if(results.value==0xFF7A85) {lcd.print("3");delay(100);} else if(results.value==0xFF10EF) {lcd.print("4");delay(100);} else if(results.value==0xFF38C7) {lcd.print("5");delay(100);} else if(results.value==0xFF5AA5) {lcd.print("6");delay(100);} else if(results.value==0xFF42BD) {lcd.print("7");delay(100);} else if(results.value==0xFF4AB5) {lcd.print("8");delay(100);} else if(results.value==0xFF52AD) {lcd.print("9");delay(100);} else if ( results.value==0xFF6897) {lcd.print("0");delay(100);} } } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (results.value==0xFFE21D) {delay(1000);lcd.clear();lcd.print("screen opening...");delay(1000);lcd.clear();} else if (results.value==0xFFA25D) {lcd.setCursor(3,0);lcd.print("screen off");delay(1000);lcd.clear();} else if (results.value==0xFF629D) {lcd.clear();} else if (results.value==0xFF22DD) {lcd.setCursor(3,0);lcd.print("Input words:");delay(1000);lcd.clear();words();} else if (results.value==0xFF02FD) {lcd.setCursor(3,0);lcd.print("Input number:");delay(1000);lcd.clear();number();} irrecv.resume(); } delay(1000); } ```
arduino 与新浪云的连接代码问题?
代码如下:#include "Arduino.h" #include <SPI.h> #include <Ethernet.h> char state = '0'; char c; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(192,168,0,102); IPAddress myDns(192,168,0,1); EthernetClient client; char server[] = "1.zhinengzhushou.applinzi.com"; int sensrdata = 50; unsigned long lastConnectionTime = 0; boolean lastConnected = false; const unsigned long postingInterval = 30*1000; //The setup function is called once at startup of the sketch void setup() { // Add your initialization code here Serial.begin(9600); delay(1000); Ethernet.begin(mac, ip, myDns); Serial.print("My IP address: "); Serial.println(Ethernet.localIP()); pinMode(13, OUTPUT); pinMode(7, OUTPUT); } // The loop function is called in an endless loop void loop() { //Add your repeated code here client.flush(); while(client.available()!=0) { state = client.read(); if(state == '{'){ //关灯 0 Serial.println(state); digitalWrite(13, LOW); digitalWrite(7, HIGH); delay(9000); }else if(state == '}'){ //开灯 1 Serial.println(state); digitalWrite(13, HIGH); digitalWrite(7, LOW); delay(9000); } } //client.flush(); if (!client.connected() && lastConnected) { Serial.println("disconnecting 2."); client.stop(); } if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) { if (client.connect(server, 80)) { Serial.println("connecting"); // send the HTTP PUT request: client.print("GET /downup.php?token=weixin&data="); client.print(sensrdata); client.println(" HTTP/1.1"); client.println("Host:1.zhinengzhushou.applinzi.com"); client.println("User-Agent: arduino-ethernet"); client.println("Connection: close"); client.println(); lastConnectionTime = millis(); }else { Serial.println("connection failed"); Serial.println("disconnecting 1."); client.stop(); } } lastConnected = client.connected(); } 出口的输出如下: My IP address: 192.168.0.102 connecting } { { { } { } { { } { } } } { { } { } } } disconnecting 2. connecting } { { 问题是 没有接收到微信端发送的数据,串口为什么还有输出,而且每个一循环,出现一个disconnecting 然后开始connecting ...... 是新浪云的问题 还是arduino 程序的问题 写了另一段代码 #include "Arduino.h" #include<SPI.h> #include<Ethernet.h> byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; EthernetClient client; char server[]="1.zhinengzhushou.applinzi.com"; unsigned long lastConnectionTime=0; boolean lastConneted=false; const unsigned long postingInterval=3*1000; String returnValue=""; boolean ResponseBegin=false; void setup() { pinMode(7,OUTPUT); Serial.begin(9600); if (Ethernet.begin(mac)==0) { Serial.println("Failed to configure Ethernet using DHCP"); for(;;); } else { Serial.println("Ethernet configuration OK"); } } void loop() { if(client.available()) { char c = client.read(); if(c=='{') { ResponseBegin=true; } else if(c=='}') { ResponseBegin=false; } if(ResponseBegin) { returnValue+=c; } } if (returnValue.length()!=0&&(ResponseBegin==false)) { Serial.println(returnValue); if(returnValue.charAt(returnValue.length())=='}') { Serial.println("turn on the LED"); digitalWrite(7,HIGH); } else if(returnValue.charAt(returnValue.length())=='{') { Serial.println("turn off the LED"); digitalWrite(7,LOW); } returnValue=""; } if(!client.connected()&&lastConneted) { Serial.println(); Serial.println("disconnecting"); client.stop(); } if(!client.connected()&&(millis()-lastConnectionTime>postingInterval)) { Serial.println("good"); getdata(); } lastConneted=client.connected(); } void getdata(void) { if(client.connect(server,80)) { Serial.println("connnecting..."); client.print("GET /downup.php?token=weixin&data="); client.println(" HTTP/1.1"); client.println("Host:1.zhinengzhushou.applinzi.com"); client.println("User-Agent:arduino-ethernet"); client.println("Connection:close"); client.println(); } else { Serial.println("connection failed"); Serial.println(); Serial.println("disconnecting."); client.stop(); } lastConnectionTime=millis(); } 串口输出如下:Ethernet configuration OK good connnecting... {var closed=false,bdiv;var charset=document.charset||document.characterSet;var utf8=['该页面的提供者尚未完成','实名认证','您的访问可能存在风险'];var gbk=['⸮⸮ҳ⸮⸮⸮⸮ṩ⸮⸮⸮⸮δ⸮⸮⸮','ʵ⸮⸮⸮⸮֤','⸮⸮⸮ķ⸮⸮ʿ⸮⸮ܴ⸮⸮ڷ⸮⸮⸮'];var en=['The provider of this page is not','verified','there are risks when you visiting'];function banner(){var char=charset.toLowerCase(),lang='';switch(true){case char.indexOf('utf')==0:lang=utf8;break;case char.indexOf('gb')==0:lang=gbk;break;default:lang=en; {var e=event?event:window.event;x=e.clientX;y=e.clientY; {if(event&&!event.initMouseEvent){return {div.style.display='none';closed=true; {if(closed){clearInterval(tt);return {bdiv.parentNode.removeChild(bdiv) disconnecting good connnecting... {var closed=false,bdiv;var charset=document.charset||document.characterSet;var utf8=['该页面的提供者尚未完成','实名认证','您的访问可能存在风险'];var gbk=['⸮⸮ҳ⸮⸮⸮⸮ṩ⸮⸮⸮⸮δ⸮⸮⸮','ʵ⸮⸮⸮⸮֤','⸮⸮⸮ķ⸮⸮ʿ⸮⸮ܴ⸮⸮ڷ⸮⸮⸮'];var en=['The provider of this page is not','verified','there are risks when you visiting'];function banner(){var char=charset.toLowerCase(),lang='';switch(true){case char.indexOf('utf')==0:lang=utf8;break;case char.indexOf('gb')==0:lang=gbk;break;default:lang=en; {var e=event?event:window.event;x=e.clientX;y=e.clientY; {if(event&&!event.initMouseEvent){return {div.style.display='none';closed=true; {if(closed){clearInterval(tt);return {bdiv.parentNode.removeChild(bdiv) 问题是,代码错了 还是其他问题 还望指教。感激不尽。
Arduino串口通信和数码管问题
本人做的项目需要串口通信,根据读取不同的值在数码管上显示不同的数字 ``` char buf; //定义串口发送的内容 //设置阴极接口 int a = 1; int b = 2; int c = 3; int d = 4; int e = 5; int f = 6; int g = 7; int p = 8; //设置阳极接口 int d4 = 9; int d3 = 10; int d2 = 11; int d1 = 12; unsigned char num[17][8] = { //a b c d e f g h {0, 0, 0, 0, 0, 0, 1, 1}, //0 {1, 0, 0, 1, 1, 1, 1, 1}, //1 {0, 0, 1, 0, 0, 1, 0, 1}, //2 {0, 0, 0, 0, 1, 1, 0, 1}, //3 {1, 0, 0, 1, 1, 0, 0, 1}, //4 {0, 1, 0, 0, 1, 0, 0, 1}, //5 {0, 1, 0, 0, 0, 0, 0, 1}, //6 {0, 0, 0, 1, 1, 1, 1, 1}, //7 {0, 0, 0, 0, 0, 0, 0, 1}, //8 {0, 0, 0, 0, 1, 0, 0, 1}, //9 {1, 1, 1, 0, 1, 1, 1, 0}, //A {1, 1, 1, 1, 1, 1, 1, 0}, //B {1, 0, 0, 1, 1, 1, 0, 0}, //C {1, 1, 1, 1, 1, 1, 0, 0}, //D {1, 0, 0, 1, 1, 1, 1, 0}, //E {1, 0, 0, 0, 1, 1, 1, 0}, //F {0, 0, 0, 0, 0, 0, 0, 0}, //. }; void setup() { Serial.begin(9600); //设置比特率,此行若去掉则数码管正常显示 pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(p, OUTPUT); } void loop() { buf = Serial.read(); if (buf == 'a') { for (int q = 0; q < 125; q++) { Display(1, 0); Display(2, 0); Display(3, 0); Display(4, 0); } } } void Display(unsigned char com, unsigned char n) //显示函数,com可选数值范围1-4,num可选数值范围0-9 { digitalWrite(a, HIGH); //去除余晖 digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(p, HIGH); switch (com) //选通位选 { case 1: digitalWrite(d1, HIGH); //选择位1 digitalWrite(d2, LOW); digitalWrite(d3, LOW); digitalWrite(d4, LOW); break; case 2: digitalWrite(d1, LOW); digitalWrite(d2, HIGH); //选择位2 digitalWrite(d3, LOW); digitalWrite(d4, LOW); break; case 3: digitalWrite(d1, LOW); digitalWrite(d2, LOW); digitalWrite(d3, HIGH); //选择位3 digitalWrite(d4, LOW); break; case 4: digitalWrite(d1, LOW); digitalWrite(d2, LOW); digitalWrite(d3, LOW); digitalWrite(d4, HIGH); //选择位4 break; default: break; } digitalWrite(a, num[n][0]); //a查询码值表 digitalWrite(b, num[n][1]); digitalWrite(c, num[n][2]); digitalWrite(d, num[n][3]); digitalWrite(e, num[n][4]); digitalWrite(f, num[n][5]); digitalWrite(g, num[n][6]); digitalWrite(p, num[n][7]); } ``` 其中,加上Serial.begin(9600); 之后,数码管最上边一段不会显示 ![图片说明](https://img-ask.csdn.net/upload/201904/05/1554472813_148878.jpg) 去掉的话就可正常显示 ![图片说明](https://img-ask.csdn.net/upload/201904/05/1554472831_155374.jpg) 请问各位大佬,这是怎么回事?该怎么改?
arduino nuo板子能改造成FT232 USB UART Board用么
原来有块USB UART的板子,可与连接传感器和电脑,然后通过串口监视读取传感器每秒输出的内容,但是现在我用的FT232进水牺牲了,手头有块arduino nuo,如果直接 连接的传感器话,串口监视那里什么都没有,请问下该怎么改造才能才能让arduino nuo具备这种功能呢,有没有相应的驱动,我刚学arduino的时候印象有相应的驱动,但现在时间长了不是很确定,求各位大佬帮助一二
单片机有的功能 arduino都有吗
单片机有的功能 arduino都有吗 单片机有的功能 arduino都有吗
大功率蓝牙遥控车怎么写代码?
本人手头有arduino uno r3、L298N电机驱动模块(直流六光耦全隔离)、HC-05主从机一体蓝牙模块、24V直流小型主轴电机40W想拿来做蓝牙遥控车,但是不知道怎么写代码,有哪位高手给指点一二?
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问